Dependency resolution conflict on universal2 with pip 22.3 and Python 3.11

Hello,

We’re trying to build PyArrow binary wheels for Python 3.11. Everything works fine except for macOS universal2 with Python 3.11, which fails on a bizarre pip ResolutionImpossible error when building the arm64 part of the wheel (we build first the arm64 part, then the x86 part, then merge them).

(note that building a arm64 wheel works fine however!)

The pip error message is unfortunately not really actionable, it’s not obvious what the problem is:

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
The conflict is caused by:
    oldest-supported-numpy 2022.8.16 depends on numpy==1.23.2; python_version == "3.11" and platform_python_implementation != "PyPy"
    oldest-supported-numpy 2022.5.28 depends on numpy; python_version >= "3.11"
    oldest-supported-numpy 2022.5.27 depends on numpy; python_version >= "3.11"
    oldest-supported-numpy 2022.4.18 depends on numpy; python_version >= "3.11"
    oldest-supported-numpy 2022.4.10 depends on numpy; python_version >= "3.11"
    oldest-supported-numpy 2022.4.8 depends on numpy; python_version >= "3.11"
    oldest-supported-numpy 2022.3.27 depends on numpy; python_version >= "3.11"
    oldest-supported-numpy 2022.1.30 depends on numpy; python_version >= "3.11"
    oldest-supported-numpy 0.15 depends on numpy; python_version >= "3.11"
    oldest-supported-numpy 0.14 depends on numpy; python_version >= "3.11"

Full CI build log is here:

More context:

We figured out the reason: we specified --platform macosx_10_14_arm64 while also needing numpy 1.23.2 (as shown in the pip conflict message above), but this version of numpy no longer provides universal2 wheels that match that platform (only 10_9_x86_64 and 11_0_arm64 wheels).

So there is basically no suitable wheel available (since also --only-binary=:all: is set) for the constraints we set ourselves. But, I would say that the conflict message of pip is still unclear and not actionable, and didn’t really help to figure this out.

1 Like

Thanks for confirming you found the cause. The inadequate error message is something we are aware of, but we haven’t been able to find an effective strategy for improving it yet. If anyone is interested in helping out, we’d be very grateful…