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

Bad resolver error for colabfold[alphafold]==1.5.5 on python 3.11 #5046

Closed
4 tasks done
konstin opened this issue Jul 14, 2024 · 16 comments
Closed
4 tasks done

Bad resolver error for colabfold[alphafold]==1.5.5 on python 3.11 #5046

konstin opened this issue Jul 14, 2024 · 16 comments
Assignees
Labels
error messages Messaging when something goes wrong

Comments

@konstin
Copy link
Member

konstin commented Jul 14, 2024

The resolver error for echo "colabfold[alphafold]==1.5.5" | cargo run pip compile -p 3.11 --universal - is verbose and has multiple problems. I'm filing this as one ticket rather than multiple since i expect that some of this is #5045 and others may be the same underlying problem. We should split it into multiple after tracking down the cause of the different problems.

Full resolver error
  × No solution found when resolving dependencies:
  ╰─▶ Because jax>=0.4.20 depends on numpy{python_version >= '3.12'}>=1.26.0 and only the following versions of jax are available:
          jax<=0.4.20
          jax==0.4.21
          jax==0.4.22
          jax==0.4.23
          jax==0.4.24
          jax==0.4.25
          jax==0.4.26
          jax==0.4.27
          jax==0.4.28
          jax==0.4.29
          jax==0.4.30
          jax>=0.5.0
      we can conclude that jax>=0.4.20 depends on numpy{python_version >= '3.12'}>=1.26.0.
      And because colabfold[alphafold]==1.5.5 depends on jax>=0.4.20 and only the following versions of numpy{python_version >=
      '3.12'} are available:
          numpy{python_version >= '3.12'}<=1.26.0
          numpy{python_version >= '3.12'}==1.26.1
          numpy{python_version >= '3.12'}==1.26.2
          numpy{python_version >= '3.12'}==1.26.3
          numpy{python_version >= '3.12'}==1.26.4
          numpy{python_version >= '3.12'}==2.0.0
      we can conclude that colabfold[alphafold]==1.5.5, any of:
          numpy<1.26.0
          numpy>1.26.0,<1.26.1
          numpy>1.26.1,<1.26.2
          numpy>1.26.2,<1.26.3
          numpy>1.26.3,<2.0.0
          numpy>2.0.0
      , numpy{python_version >= '3.12'}!=1.26.4 are incompatible. (1)

      Because only the following versions of tensorflow-cpu{sys_platform != 'darwin'} are available:
          tensorflow-cpu{sys_platform != 'darwin'}<=2.12.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.13.0
          tensorflow-cpu{sys_platform != 'darwin'}==2.13.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.14.0
          tensorflow-cpu{sys_platform != 'darwin'}==2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}==2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>=3.0.0
      and any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.12.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.13.0,<=2.13.1
      depend on numpy>=1.22,<=1.24.3, we can conclude that any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.13.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.13.0,<2.13.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.13.1,<2.14.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.14.0,<2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.14.1,<2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0,<2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0.post1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      depend on numpy>=1.22,<=1.24.3.
      And because tensorflow-cpu{sys_platform != 'darwin'}>=2.13.0,<=2.13.1 depends on numpy>=1.22,<=1.24.3 and
      numpy>=1.22,<=1.24.3, we can conclude that any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.14.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.14.0,<2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.14.1,<2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0,<2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0.post1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      depend on numpy>=1.22,<=1.24.3. (2)

      Because tensorflow-macos{sys_platform == 'darwin'}==2.10.0 depends on tensorflow-macos{sys_platform == 'darwin'}==2.10.0 and
      tensorflow-macos{sys_platform == 'darwin'}>=2.9.1,<=2.11.0 depends on protobuf>=3.9.2,<3.20, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
      depend on protobuf>=3.9.2,<3.20.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.8.0 depends on keras>=2.8.0rc0,<2.9 and flatbuffers>=1.12,<2, we can
      conclude that any of:
          flatbuffers<1.12
          flatbuffers>=2
      , any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , tensorflow-macos{sys_platform == 'darwin'}!=2.7.0, any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.7.0 depends on flatbuffers>=1.12,<3.0 and any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.14.0,<=2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.15.0,<=2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
      depend on flatbuffers>=23.5.26, we can conclude that any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.14.0
          tensorflow-cpu{sys_platform != 'darwin'}==2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.2
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.14.0,<=2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.15.0,<=2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>=2.17.0
      depend on one of:
          protobuf>=3.20.3,<4.21.0
          protobuf>4.21.0,<4.21.1
          protobuf>4.21.1,<4.21.2
          protobuf>4.21.2,<4.21.3
          protobuf>4.21.3,<4.21.4
          protobuf>4.21.4,<4.21.5
          protobuf>4.21.5,<5.0.0.dev0
      and keras>=2.14.0,<2.15, we can conclude that any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.14.0
          tensorflow-cpu{sys_platform != 'darwin'}==2.14.1
       and any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because we know from (2) that any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.14.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.14.0,<2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.14.1,<2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0,<2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0.post1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      depend on numpy>=1.22,<=1.24.3, we can conclude that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.14.1,<2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0,<2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0.post1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible. (3)

      Because tensorflow-macos{sys_platform == 'darwin'}==2.10.0 depends on tensorflow-macos{sys_platform == 'darwin'}==2.10.0 and
      tensorflow-macos{sys_platform == 'darwin'}>=2.9.1,<=2.11.0 depends on protobuf>=3.9.2,<3.20, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
      depend on protobuf>=3.9.2,<3.20.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.8.0 depends on keras>=2.8.0rc0,<2.9 and flatbuffers>=1.12,<2, we can
      conclude that any of:
          flatbuffers<1.12
          flatbuffers>=2
      , any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , tensorflow-macos{sys_platform == 'darwin'}!=2.7.0, any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.7.0 depends on flatbuffers>=1.12,<3.0 and any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.15.0,<=2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
      depend on flatbuffers>=23.5.26, we can conclude that any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.2
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.15.0,<=2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>=2.17.0
      depend on one of:
          protobuf>=3.20.3,<4.21.0
          protobuf>4.21.0,<4.21.1
          protobuf>4.21.1,<4.21.2
          protobuf>4.21.2,<4.21.3
          protobuf>4.21.3,<4.21.4
          protobuf>4.21.4,<4.21.5
          protobuf>4.21.5,<5.0.0.dev0
      and keras>=2.14.0,<2.15, we can conclude that tensorflow-cpu{sys_platform != 'darwin'}==2.14.1 and any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because we know from (3) that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.14.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.14.1,<2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0,<2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0.post1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible, we can conclude that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0,<2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0.post1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible. (4)

      Because tensorflow-macos{sys_platform == 'darwin'}==2.10.0 depends on tensorflow-macos{sys_platform == 'darwin'}==2.10.0 and
      tensorflow-macos{sys_platform == 'darwin'}>=2.9.1,<=2.11.0 depends on protobuf>=3.9.2,<3.20, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
      depend on protobuf>=3.9.2,<3.20.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.8.0 depends on keras>=2.8.0rc0,<2.9 and flatbuffers>=1.12,<2, we can
      conclude that any of:
          flatbuffers<1.12
          flatbuffers>=2
      , any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , tensorflow-macos{sys_platform == 'darwin'}!=2.7.0, any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.7.0 depends on flatbuffers>=1.12,<3.0 and any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.15.0,<=2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
      depend on flatbuffers>=23.5.26, we can conclude that any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.2
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.15.0,<=2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>=2.17.0
      depend on one of:
          protobuf>=3.20.3,<4.21.0
          protobuf>4.21.0,<4.21.1
          protobuf>4.21.1,<4.21.2
          protobuf>4.21.2,<4.21.3
          protobuf>4.21.3,<4.21.4
          protobuf>4.21.4,<4.21.5
          protobuf>4.21.5,<5.0.0.dev0
      and keras>=2.15.0,<2.16, we can conclude that any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.1
       and any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because we know from (4) that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.15.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0,<2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0.post1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible, we can conclude that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0.post1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible. (5)

      Because tensorflow-macos{sys_platform == 'darwin'}==2.10.0 depends on tensorflow-macos{sys_platform == 'darwin'}==2.10.0 and
      tensorflow-macos{sys_platform == 'darwin'}>=2.9.1,<=2.11.0 depends on protobuf>=3.9.2,<3.20, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
      depend on protobuf>=3.9.2,<3.20.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.8.0 depends on keras>=2.8.0rc0,<2.9 and flatbuffers>=1.12,<2, we can
      conclude that any of:
          flatbuffers<1.12
          flatbuffers>=2
      , any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , tensorflow-macos{sys_platform == 'darwin'}!=2.7.0, any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.7.0 depends on flatbuffers>=1.12,<3.0 and any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.15.0.post1,<=2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
      depend on flatbuffers>=23.5.26, we can conclude that any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.2
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.15.0.post1,<=2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>=2.17.0
      depend on one of:
          protobuf>=3.20.3,<4.21.0
          protobuf>4.21.0,<4.21.1
          protobuf>4.21.1,<4.21.2
          protobuf>4.21.2,<4.21.3
          protobuf>4.21.3,<4.21.4
          protobuf>4.21.4,<4.21.5
          protobuf>4.21.5,<5.0.0.dev0
      and keras>=2.15.0,<2.16, we can conclude that any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.1
       and any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because we know from (5) that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.15.0.post1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.0.post1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible, we can conclude that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible. (6)

      Because tensorflow-macos{sys_platform == 'darwin'}==2.10.0 depends on tensorflow-macos{sys_platform == 'darwin'}==2.10.0 and
      tensorflow-macos{sys_platform == 'darwin'}>=2.9.1,<=2.11.0 depends on protobuf>=3.9.2,<3.20, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
      depend on protobuf>=3.9.2,<3.20.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.8.0 depends on keras>=2.8.0rc0,<2.9 and flatbuffers>=1.12,<2, we can
      conclude that any of:
          flatbuffers<1.12
          flatbuffers>=2
      , any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , tensorflow-macos{sys_platform == 'darwin'}!=2.7.0, any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.7.0 depends on flatbuffers>=1.12,<3.0 and any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
      depend on flatbuffers>=23.5.26, we can conclude that any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.2
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>=2.17.0
      depend on one of:
          protobuf>=3.20.3,<4.21.0
          protobuf>4.21.0,<4.21.1
          protobuf>4.21.1,<4.21.2
          protobuf>4.21.2,<4.21.3
          protobuf>4.21.3,<4.21.4
          protobuf>4.21.4,<4.21.5
          protobuf>4.21.5,<5.0.0.dev0
      and keras>=2.15.0,<2.16, we can conclude that tensorflow-cpu{sys_platform != 'darwin'}==2.15.1 and any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because we know from (6) that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.15.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.15.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible, we can conclude that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible. (7)

      Because tensorflow-macos{sys_platform == 'darwin'}==2.10.0 depends on tensorflow-macos{sys_platform == 'darwin'}==2.10.0 and
      tensorflow-macos{sys_platform == 'darwin'}>=2.9.1,<=2.11.0 depends on protobuf>=3.9.2,<3.20, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
      depend on protobuf>=3.9.2,<3.20.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.8.0 depends on keras>=2.8.0rc0,<2.9 and flatbuffers>=1.12,<2, we can
      conclude that any of:
          flatbuffers<1.12
          flatbuffers>=2
      , any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , tensorflow-macos{sys_platform == 'darwin'}!=2.7.0, any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.7.0 depends on flatbuffers>=1.12,<3.0 and
      tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2 depends on flatbuffers>=23.5.26, we can conclude that any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.2
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.16.1,<=2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>=2.17.0
      depend on one of:
          protobuf>=3.20.3,<4.21.0
          protobuf>4.21.0,<4.21.1
          protobuf>4.21.1,<4.21.2
          protobuf>4.21.2,<4.21.3
          protobuf>4.21.3,<4.21.4
          protobuf>4.21.4,<4.21.5
          protobuf>4.21.5,<5.0.0.dev0
      and keras>=3.0.0, we can conclude that any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.2
       and any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because we know from (7) that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.16.1
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible, we can conclude that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible. (8)

      Because tensorflow-macos{sys_platform == 'darwin'}==2.10.0 depends on tensorflow-macos{sys_platform == 'darwin'}==2.10.0 and
      tensorflow-macos{sys_platform == 'darwin'}>=2.9.1,<=2.11.0 depends on protobuf>=3.9.2,<3.20, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
      depend on protobuf>=3.9.2,<3.20.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.8.0 depends on keras>=2.8.0rc0,<2.9 and flatbuffers>=1.12,<2, we can
      conclude that any of:
          flatbuffers<1.12
          flatbuffers>=2
      , any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , tensorflow-macos{sys_platform == 'darwin'}!=2.7.0, any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.7.0 depends on flatbuffers>=1.12,<3.0 and
      tensorflow-cpu{sys_platform != 'darwin'}==2.16.2 depends on flatbuffers>=23.5.26, we can conclude that any of:
          keras<2.8.0rc0
          keras>=2.9
      , any of:
          protobuf<3.9.2
          protobuf>=3.20
      , tensorflow-cpu{sys_platform != 'darwin'}==2.16.2, any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because any of:
          tensorflow-cpu{sys_platform != 'darwin'}==2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>=2.17.0
      depend on one of:
          protobuf>=3.20.3,<4.21.0
          protobuf>4.21.0,<4.21.1
          protobuf>4.21.1,<4.21.2
          protobuf>4.21.2,<4.21.3
          protobuf>4.21.3,<4.21.4
          protobuf>4.21.4,<4.21.5
          protobuf>4.21.5,<5.0.0.dev0
      and keras>=3.0.0, we can conclude that tensorflow-cpu{sys_platform != 'darwin'}==2.16.2 and any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because we know from (8) that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.16.2
          tensorflow-cpu{sys_platform != 'darwin'}>2.16.2,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible, we can conclude that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
      And because only the following versions of tensorflow-macos{sys_platform == 'darwin'} are available:
          tensorflow-macos{sys_platform == 'darwin'}==2.5.0
          tensorflow-macos{sys_platform == 'darwin'}==2.6.0
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
          tensorflow-macos{sys_platform == 'darwin'}==2.12.0
          tensorflow-macos{sys_platform == 'darwin'}==2.13.0
          tensorflow-macos{sys_platform == 'darwin'}==2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>=2.14.0
      and tensorflow-macos{sys_platform == 'darwin'}>=2.13.0,<=2.13.1 depends on numpy>=1.22,<=1.24.3, we can conclude that any of:
          numpy<1.22
          numpy>1.24.3
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.5.0
          tensorflow-macos{sys_platform == 'darwin'}>2.5.0,<2.6.0
          tensorflow-macos{sys_platform == 'darwin'}>2.6.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , tensorflow-macos{sys_platform == 'darwin'}<2.14.0 are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.12.0 depends on numpy>=1.22,<1.24 and numpy>=1.19.2,<1.20.dev0, we
      can conclude that any of:
          numpy<1.19.2
          numpy>=1.20.dev0,<1.22
          numpy>1.24.3
      , any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , tensorflow-macos{sys_platform == 'darwin'}<2.14.0 are incompatible.
      And because we know from (1) that colabfold[alphafold]==1.5.5, any of:
          numpy<1.26.0
          numpy>1.26.0,<1.26.1
          numpy>1.26.1,<1.26.2
          numpy>1.26.2,<1.26.3
          numpy>1.26.3,<2.0.0
          numpy>2.0.0
      , numpy{python_version >= '3.12'}!=1.26.4 are incompatible, we can conclude that colabfold[alphafold]==1.5.5, any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , tensorflow-macos{sys_platform == 'darwin'}<2.14.0 are incompatible. (9)

      Because only the following versions of tensorflow-macos{sys_platform == 'darwin'} are available:
          tensorflow-macos{sys_platform == 'darwin'}==2.5.0
          tensorflow-macos{sys_platform == 'darwin'}==2.6.0
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
          tensorflow-macos{sys_platform == 'darwin'}==2.12.0
          tensorflow-macos{sys_platform == 'darwin'}==2.13.0
          tensorflow-macos{sys_platform == 'darwin'}==2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>=2.14.0
      and tensorflow-macos{sys_platform == 'darwin'}<=2.6.0 depends on h5py>=3.1.0,<3.2.dev0, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.6.0
          tensorflow-macos{sys_platform == 'darwin'}>2.6.0,<2.7.0
          tensorflow-macos{sys_platform == 'darwin'}>2.7.0,<2.8.0
          tensorflow-macos{sys_platform == 'darwin'}>2.8.0,<2.9.0
          tensorflow-macos{sys_platform == 'darwin'}>2.9.0,<2.9.1
          tensorflow-macos{sys_platform == 'darwin'}>2.9.1,<2.9.2
          tensorflow-macos{sys_platform == 'darwin'}>2.9.2,<2.10.0
          tensorflow-macos{sys_platform == 'darwin'}>2.10.0,<2.11.0
          tensorflow-macos{sys_platform == 'darwin'}>2.11.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
      depend on h5py>=3.1.0,<3.2.dev0.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.6.0 depends on keras>=2.6,<3.dev0, we can conclude that any of:
          h5py<3.1.0
          h5py>=3.2.dev0
      , any of:
          keras<2.6
          keras>=3.dev0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.7.0
          tensorflow-macos{sys_platform == 'darwin'}>2.7.0,<2.8.0
          tensorflow-macos{sys_platform == 'darwin'}>2.8.0,<2.9.0
          tensorflow-macos{sys_platform == 'darwin'}>2.9.0,<2.9.1
          tensorflow-macos{sys_platform == 'darwin'}>2.9.1,<2.9.2
          tensorflow-macos{sys_platform == 'darwin'}>2.9.2,<2.10.0
          tensorflow-macos{sys_platform == 'darwin'}>2.10.0,<2.11.0
          tensorflow-macos{sys_platform == 'darwin'}>2.11.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.7.0 depends on keras>=2.7.0rc0,<2.8 and keras>=2.8.0rc0,<2.9, we can
      conclude that any of:
          h5py<3.1.0
          h5py>=3.2.dev0
      , any of:
          keras<2.6
          keras>=3.dev0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.9.0
          tensorflow-macos{sys_platform == 'darwin'}>2.9.0,<2.9.1
          tensorflow-macos{sys_platform == 'darwin'}>2.9.1,<2.9.2
          tensorflow-macos{sys_platform == 'darwin'}>2.9.2,<2.10.0
          tensorflow-macos{sys_platform == 'darwin'}>2.10.0,<2.11.0
          tensorflow-macos{sys_platform == 'darwin'}>2.11.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}>=2.9.0,<=2.9.2 depends on keras>=2.9.0rc0,<2.10.0 and
      keras>=2.9.0rc0,<2.10.0, we can conclude that any of:
          h5py<3.1.0
          h5py>=3.2.dev0
      , any of:
          keras<2.6
          keras>=3.dev0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.9.2
          tensorflow-macos{sys_platform == 'darwin'}>2.9.2,<2.10.0
          tensorflow-macos{sys_platform == 'darwin'}>2.10.0,<2.11.0
          tensorflow-macos{sys_platform == 'darwin'}>2.11.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.9.2 depends on keras>=2.9.0rc0,<2.10.0 and keras>=2.10.0,<2.11, we
      can conclude that any of:
          h5py<3.1.0
          h5py>=3.2.dev0
      , any of:
          keras<2.6
          keras>=3.dev0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.11.0
          tensorflow-macos{sys_platform == 'darwin'}>2.11.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.11.0 depends on keras>=2.11.0,<2.12 and keras>=2.12.0,<2.13, we can
      conclude that any of:
          h5py<3.1.0
          h5py>=3.2.dev0
      , any of:
          keras<2.6
          keras>=3.dev0
      , any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}>=2.13.0,<=2.13.1 depends on keras>=2.13.1,<2.14 and
      keras>=2.13.1,<2.14, we can conclude that any of:
          h5py<3.1.0
          h5py>=3.2.dev0
      , any of:
          keras<2.6
          keras>=3.dev0
      , tensorflow-macos{sys_platform == 'darwin'}<2.14.0 are incompatible.
      And because tensorflow-cpu{sys_platform != 'darwin'}==2.17.0 depends on keras>=3.2.0 and h5py>=3.10.0, we can conclude that
      tensorflow-cpu{sys_platform != 'darwin'}==2.17.0 and tensorflow-macos{sys_platform == 'darwin'}<2.14.0 are incompatible.
      And because we know from (9) that colabfold[alphafold]==1.5.5, any of:
          tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<2.17.0
          tensorflow-cpu{sys_platform != 'darwin'}>2.17.0,<3.0.0
      , tensorflow-macos{sys_platform == 'darwin'}<2.14.0 are incompatible, we can conclude that colabfold[alphafold]==1.5.5,
      tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<3.0.0, tensorflow-macos{sys_platform == 'darwin'}<2.14.0 are incompatible.
      And because colabfold==1.5.5 depends on tensorflow-cpu{sys_platform != 'darwin'}>=2.12.1,<3.0.0 and
      tensorflow-macos{sys_platform == 'darwin'}<2.14.0, we can conclude that colabfold==1.5.5 and colabfold[alphafold]==1.5.5 are
      incompatible.
      And because you require colabfold==1.5.5 and colabfold[alphafold]==1.5.5, we can conclude that the requirements are
      unsatisfiable.
  • The following part says that due to jax>=0.4.20 depends on numpy{python_version >= '3.12'}>=1.26.0, we know that
    jax>=0.4.20 depends on numpy{python_version >= '3.12'}>=1.26.0.. We can skip this entire section with the jax listing and only tell the user about the jax -> numpy dependency.
  ╰─▶ Because jax>=0.4.20 depends on numpy{python_version >= '3.12'}>=1.26.0 and only the following versions of jax are available:
          jax<=0.4.20
          jax==0.4.21
          jax==0.4.22
          jax==0.4.23
          jax==0.4.24
          jax==0.4.25
          jax==0.4.26
          jax==0.4.27
          jax==0.4.28
          jax==0.4.29
          jax==0.4.30
          jax>=0.5.0
      we can conclude that jax>=0.4.20 depends on numpy{python_version >= '3.12'}>=1.26.0.
  • In the section below, we list numpy sometimes with a requires-python marker, and sometimes without. It is not
    clear why, and if we need this information, we shouldn't repeat it for each package.
  • Also in the section below, we jump from numpy{python_version >= '3.12'}>=1.26.0 to a list of incompatibilities and a conclusion about numpy{python_version >= '3.12'}!=1.26.4 for a reason not explained.
      And because colabfold[alphafold]==1.5.5 depends on jax>=0.4.20 and only the following versions of numpy{python_version >=
      '3.12'} are available:
          numpy{python_version >= '3.12'}<=1.26.0
          numpy{python_version >= '3.12'}==1.26.1
          numpy{python_version >= '3.12'}==1.26.2
          numpy{python_version >= '3.12'}==1.26.3
          numpy{python_version >= '3.12'}==1.26.4
          numpy{python_version >= '3.12'}==2.0.0
      we can conclude that colabfold[alphafold]==1.5.5, any of:
          numpy<1.26.0
          numpy>1.26.0,<1.26.1
          numpy>1.26.1,<1.26.2
          numpy>1.26.2,<1.26.3
          numpy>1.26.3,<2.0.0
          numpy>2.0.0
      , numpy{python_version >= '3.12'}!=1.26.4 are incompatible. (1)
  • We also don't collapse packages with markers, there are no prerelease for <2.13.0rc0:
      , tensorflow-macos{sys_platform == 'darwin'}!=2.7.0, any of:
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
       are incompatible.
@konstin konstin added error messages Messaging when something goes wrong preview Experimental behavior labels Jul 14, 2024
@zanieb
Copy link
Member

zanieb commented Aug 16, 2024

As of f2d6718 the error is

  × No solution found when resolving dependencies for split (python_full_version >= '3.12'):
  ╰─▶ Because colabfold[alphafold]==1.5.5 depends on jax>=0.4.20 and only the following versions of jax are available:
          jax<=0.4.20
          jax==0.4.21
          jax==0.4.22
          jax==0.4.23
          jax==0.4.24
          jax==0.4.25
          jax==0.4.26
          jax==0.4.27
          jax==0.4.28
          jax==0.4.29
          jax==0.4.30
          jax==0.4.31
      we can conclude that colabfold[alphafold]==1.5.5 depends on jax>=0.4.20.
      And because jax>=0.4.20 depends on numpy>=1.26.0, we can conclude that colabfold[alphafold]==1.5.5 depends on numpy>=1.26.0.
      (1)

      Because only the following versions of tensorflow-macos{sys_platform == 'darwin'} are available:
          tensorflow-macos{sys_platform == 'darwin'}==2.5.0
          tensorflow-macos{sys_platform == 'darwin'}==2.6.0
          tensorflow-macos{sys_platform == 'darwin'}==2.7.0
          tensorflow-macos{sys_platform == 'darwin'}==2.8.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.0
          tensorflow-macos{sys_platform == 'darwin'}==2.9.1
          tensorflow-macos{sys_platform == 'darwin'}==2.9.2
          tensorflow-macos{sys_platform == 'darwin'}==2.10.0
          tensorflow-macos{sys_platform == 'darwin'}==2.11.0
          tensorflow-macos{sys_platform == 'darwin'}==2.12.0
          tensorflow-macos{sys_platform == 'darwin'}==2.13.0
          tensorflow-macos{sys_platform == 'darwin'}==2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>=2.14.0
      and tensorflow-macos{sys_platform == 'darwin'}==2.5.0 has no wheels with a matching Python ABI tag, we can conclude that any
      of:
          tensorflow-macos{sys_platform == 'darwin'}<2.6.0
          tensorflow-macos{sys_platform == 'darwin'}>2.6.0,<2.7.0
          tensorflow-macos{sys_platform == 'darwin'}>2.7.0,<2.8.0
          tensorflow-macos{sys_platform == 'darwin'}>2.8.0,<2.9.0
          tensorflow-macos{sys_platform == 'darwin'}>2.9.0,<2.9.1
          tensorflow-macos{sys_platform == 'darwin'}>2.9.1,<2.9.2
          tensorflow-macos{sys_platform == 'darwin'}>2.9.2,<2.10.0
          tensorflow-macos{sys_platform == 'darwin'}>2.10.0,<2.11.0
          tensorflow-macos{sys_platform == 'darwin'}>2.11.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.6.0 has no wheels with a matching Python ABI tag and
      tensorflow-macos{sys_platform == 'darwin'}==2.7.0 has no wheels with a matching Python ABI tag, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.8.0
          tensorflow-macos{sys_platform == 'darwin'}>2.8.0,<2.9.0
          tensorflow-macos{sys_platform == 'darwin'}>2.9.0,<2.9.1
          tensorflow-macos{sys_platform == 'darwin'}>2.9.1,<2.9.2
          tensorflow-macos{sys_platform == 'darwin'}>2.9.2,<2.10.0
          tensorflow-macos{sys_platform == 'darwin'}>2.10.0,<2.11.0
          tensorflow-macos{sys_platform == 'darwin'}>2.11.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.8.0 has no wheels with a matching Python ABI tag and
      tensorflow-macos{sys_platform == 'darwin'}==2.9.0 has no wheels with a matching Python ABI tag, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.9.1
          tensorflow-macos{sys_platform == 'darwin'}>2.9.1,<2.9.2
          tensorflow-macos{sys_platform == 'darwin'}>2.9.2,<2.10.0
          tensorflow-macos{sys_platform == 'darwin'}>2.10.0,<2.11.0
          tensorflow-macos{sys_platform == 'darwin'}>2.11.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.9.1 has no wheels with a matching Python ABI tag and
      tensorflow-macos{sys_platform == 'darwin'}==2.9.2 has no wheels with a matching Python ABI tag, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.10.0
          tensorflow-macos{sys_platform == 'darwin'}>2.10.0,<2.11.0
          tensorflow-macos{sys_platform == 'darwin'}>2.11.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}==2.10.0 has no wheels with a matching Python ABI tag and
      tensorflow-macos{sys_platform == 'darwin'}==2.11.0 has no wheels with a matching Python ABI tag, we can conclude that any of:
          tensorflow-macos{sys_platform == 'darwin'}<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}>=2.13.0,<=2.13.1 depends on numpy>=1.22,<=1.24.3 and numpy>=1.22,<1.24,
      we can conclude that tensorflow-macos{sys_platform == 'darwin'}<2.14.0 depends on numpy>=1.22,<=1.24.3.
      And because we know from (1) that colabfold[alphafold]==1.5.5 depends on numpy>=1.26.0, we can conclude that
      colabfold[alphafold]==1.5.5 and tensorflow-macos{sys_platform == 'darwin'}<2.14.0 are incompatible.
      And because colabfold==1.5.5 depends on tensorflow-macos{sys_platform == 'darwin'}<2.14.0, we can conclude that
      colabfold==1.5.5 and colabfold[alphafold]==1.5.5 are incompatible.
      And because you require colabfold==1.5.5 and colabfold[alphafold]==1.5.5, we can conclude that your requirements are
      unsatisfiable.

zanieb added a commit that referenced this issue Aug 16, 2024
Uses my expanding tree reduction knowledge from #6092 to improve the
long-standing issue of verbose messages for unavailable packages.

Implements pubgrub-rs/pubgrub#232, but
post-resolution instead of during resolution.

Partially addresses #5046
Closes #2519
zanieb added a commit that referenced this issue Aug 16, 2024
…ers or extras (#6162)

There were different `PubGrubPackage` types so they never matched the
available versions set! Luckily, the available versions are agnostic to
the markers and optional dependencies so we can just broaden to using
`PackageName` as a lookup key.

Addresses yet another complaint in
#5046
@dimbleby
Copy link

error message aside: is it right that there is no solution? https://github.com/sokrypton/ColabFold/blob/v1.5.5/poetry.lock says there is.

@charliermarsh
Copy link
Member

Not sure. Worth understanding, I'll take a look. The part of the error that I don't see in the dependency graph is: because jax>=0.4.20 depends on numpy>=1.26.0.

@charliermarsh
Copy link
Member

Jax does have Requires-Dist: numpy >=1.26.0 ; python_version >= "3.12", so that's actually correct. I think there isn't a solution to this for Python 3.12, and that's why we fail. We try to solve for Python 3.11 and later.

@charliermarsh
Copy link
Member

It would be fixed by #6150, which we should probably do.

@charliermarsh
Copy link
Member

I actually think the right fix is... have the user specify a range of Python versions to resolve for, separate from requires-python. I don't think users should be putting upper bounds on their requires-python. What you want to convey is: I don't care about having a valid resolution for Python 3.12 (as opposed to: my code only supports Python 3.11).

@charliermarsh
Copy link
Member

So, I'd say it should actually be solved by #4087.

@dimbleby
Copy link

Ah, the -p 3.11 bit is ignored then?

@charliermarsh
Copy link
Member

Not quite -- it's not that it's ignored. It's that we solve for Python 3.11 as a minimum supported version.

@charliermarsh
Copy link
Member

It's like: requires-python = ">=3.11".

@dimbleby
Copy link

dimbleby commented Aug 17, 2024

That'd do it. Then there's definitely no solution, right from the start: https://github.com/sokrypton/ColabFold/blob/675f93a44eee6589a003164b047e7d4183073d1e/pyproject.toml#L22

zanieb added a commit that referenced this issue Aug 19, 2024
…6160)

In #5046, we show the tautological
proof:

```
  ╰─▶ Because colabfold[alphafold]==1.5.5 depends on jax>=0.4.20 and only the following versions of jax are available:
          jax<=0.4.20
          jax==0.4.21
          jax==0.4.22
          jax==0.4.23
          jax==0.4.24
          jax==0.4.25
          jax==0.4.26
          jax==0.4.27
          jax==0.4.28
          jax==0.4.29
          jax==0.4.30
          jax==0.4.31
      we can conclude that colabfold[alphafold]==1.5.5 depends on jax>=0.4.20.
      And because jax>=0.4.20 depends on numpy>=1.26.0, we can conclude that colabfold[alphafold]==1.5.5 depends on numpy>=1.26.0.
      (1)
```

This is a part of the error tree because the statement
`colabfold[alphafold]==1.5.5 depends on jax>=0.4.20` is actually a
simplification of `colabfold[alphafold]==1.5.5 depends on
jax>=0.4.20,<0.5.0` and the no versions clause is a proof of that
simplification.

Without simplification, the clause looks like:

```
  ╰─▶ Because colabfold[alphafold]==1.5.5 depends on jax>=0.4.20,<0.5.0 and only the following versions of jax are available:
          jax<=0.4.20
          jax==0.4.21
          jax==0.4.22
          jax==0.4.23
          jax==0.4.24
          jax==0.4.25
          jax==0.4.26
          jax==0.4.27
          jax==0.4.28
          jax==0.4.29
          jax==0.4.30
          jax==0.4.31
      we can conclude that colabfold[alphafold]==1.5.5 depends on one of:
          jax==0.4.20
          jax==0.4.21
          jax==0.4.22
          jax==0.4.23
          jax==0.4.24
          jax==0.4.25
          jax==0.4.26
          jax==0.4.27
          jax==0.4.28
          jax==0.4.29
          jax==0.4.30
          jax==0.4.31
      And because jax>=0.4.20 depends on numpy>=1.26.0, we can conclude that colabfold[alphafold]==1.5.5 depends on numpy>=1.26.0.
```

I don't think we have a great way to avoid performing the simplification
of the range conditionally and it makes the error simpler to just jump
straight to `colabfold[alphafold]==1.5.5 depends on jax>=0.4.20`.

The derivation for this clause looks like:

```
          jax==0.4.20 | ==0.4.21 | ==0.4.22 | ==0.4.23 | ==0.4.24 | ==0.4.25 | ==0.4.26 | ==0.4.27 | ==0.4.28 | ==0.4.29 | ==0.4.30 | ==0.4.31 depends on numpy>=1.26.0
            no versions of jax>0.4.20, <0.4.21 | >0.4.21, <0.4.22 | >0.4.22, <0.4.23 | >0.4.23, <0.4.24 | >0.4.24, <0.4.25 | >0.4.25, <0.4.26 | >0.4.26, <0.4.27 | >0.4.27, <0.4.28 | >0.4.28, <0.4.29 | >0.4.29, <0.4.30 | >0.4.30, <0.4.31 | >0.4.31, <0.5.0
            colabfold[alphafold]==1.5.5 depends on jax>=0.4.20, <0.5.0
```

So it looks like we can take trees of this form and drop the "no
versions" clause _if_ the ranges are compatible[*]. See [this
comment](#6160 (comment))
for a simpler explanation.

With this pull request, the clause simplifies to

```
╰─▶ Because colabfold[alphafold]==1.5.5 depends on jax>=0.4.20 and jax>=0.4.20 depends on numpy>=1.26.0,
     we can conclude that colabfold[alphafold]==1.5.5 depends on numpy>=1.26.0. (1)
```

Unfortunately, this doesn't change any snapshots in our test suite so
I'm uncertain if the strategy generalizes. In some incorrect iterations
of this logic, the snapshots did reveal my mistakes.

[*] "if the ranges are compatible" includes a bit of hand-waving. I'm
not 100% sure if I've chosen the correct range heuristic here.
@zanieb zanieb removed the preview Experimental behavior label Aug 20, 2024
@konstin
Copy link
Member Author

konstin commented Aug 23, 2024

The error with current main is:

  × No solution found when resolving dependencies for split (python_full_version >= '3.12'):
  ╰─▶ Because colabfold[alphafold]==1.5.5 depends on jax>=0.4.20 and jax>=0.4.20 depends on numpy>=1.26.0, we
      can conclude that colabfold[alphafold]==1.5.5 depends on numpy>=1.26.0. (1)

      Because only the following versions of tensorflow-macos{sys_platform == 'darwin'} are available:
          tensorflow-macos{sys_platform == 'darwin'}<=2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>=2.13.0
      and tensorflow-macos{sys_platform == 'darwin'}<=2.11.0 has no wheels with a matching Python ABI tag, we
      can conclude that all of:
          tensorflow-macos{sys_platform == 'darwin'}<2.6.0
          tensorflow-macos{sys_platform == 'darwin'}>2.6.0,<2.7.0
          tensorflow-macos{sys_platform == 'darwin'}>2.7.0,<2.8.0
          tensorflow-macos{sys_platform == 'darwin'}>2.8.0,<2.9.0
          tensorflow-macos{sys_platform == 'darwin'}>2.9.0,<2.9.1
          tensorflow-macos{sys_platform == 'darwin'}>2.9.1,<2.9.2
          tensorflow-macos{sys_platform == 'darwin'}>2.9.2,<2.10.0
          tensorflow-macos{sys_platform == 'darwin'}>2.10.0,<2.11.0
          tensorflow-macos{sys_platform == 'darwin'}>2.11.0,<2.12.0
          tensorflow-macos{sys_platform == 'darwin'}>2.12.0,<2.13.0
          tensorflow-macos{sys_platform == 'darwin'}>2.13.0,<2.13.1
          tensorflow-macos{sys_platform == 'darwin'}>2.13.1,<2.14.0
       are incompatible.
      And because tensorflow-macos{sys_platform == 'darwin'}>=2.13.0,<=2.13.1 depends on numpy>=1.22,<=1.24.3
      and numpy>=1.22,<1.24, we can conclude that tensorflow-macos{sys_platform == 'darwin'}<2.14.0 depends
      on numpy>=1.22,<=1.24.3.
      And because we know from (1) that colabfold[alphafold]==1.5.5 depends on numpy>=1.26.0, we can conclude
      that colabfold[alphafold]==1.5.5 and tensorflow-macos{sys_platform == 'darwin'}<2.14.0 are incompatible.
      And because colabfold==1.5.5 depends on tensorflow-macos{sys_platform == 'darwin'}<2.14.0, we can conclude
      that colabfold==1.5.5 and colabfold[alphafold]==1.5.5 are incompatible.
      And because you require colabfold==1.5.5 and colabfold[alphafold]==1.5.5, we can conclude that your
      requirements are unsatisfiable.

This does not look bad anymore. We could collapse tensorflow-macos{sys_platform == 'darwin' some more and it's unhelpful that we're complaining about a lack of ABI when we're meaning specifically the python version in the build tag, but the error message overall is correct and explains the problem.

@konstin konstin closed this as completed Aug 23, 2024
@dimbleby
Copy link

if uv is trying to solve for python >= "3.12", it would have been even simpler to notice directly that colabfold 1.5.5 requires python ">=3.9,<3.12"

@konstin
Copy link
Member Author

konstin commented Aug 23, 2024

We're ignoring upper bounds on requires-python in the resolver, we've made the experience that this leads to undesirable behavior (#4022)

@dimbleby
Copy link

interesting choice! (I see I was in that issue already but either missed or forgot this outcome)

well I guess this issue is an example of that decision having downside

Even with the relatively improved error message: if the fact is that this project does not install on python 3.12 and had declared that it didn't install on python 3.12 - I guess users would rather have seen that message than this one.

(of course there is upside too, no doubt some projects will succeed in installing even though they declared that they would fail)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
error messages Messaging when something goes wrong
Projects
No open projects
Status: Done
Development

No branches or pull requests

4 participants