scipy / oldest-supported-numpy

Meta-package providing the oldest supported Numpy for a given Python version and platform
BSD 2-Clause "Simplified" License
55 stars 33 forks source link

Add correct requirement for py37 and arm64 M1 processors #48

Closed lxbader closed 2 years ago

lxbader commented 2 years ago

Would it be possible to add a requirement like numpy==1.21.0; python_version=='3.7' and platform_machine=='arm64' and platform_system=='Darwin' for users with new ARM64 processors who still need to run pandas and other packages on python 3.7?

I would open a PR but don't seem to have the permissions.

rgommers commented 2 years ago

IIRC neither PyPI nor conda has 3.7 binaries for macOS arm64, so it's not clear to me that that is a valid combination at all. And 1.22.0 requires Python >=3.8, so not have a pin should already give you a 1.21.x sdist. So this doesn't look useful to me. If I'm missing something, can you please explain in more detail @lxbader?

I would open a PR but don't seem to have the permissions.

This is a regular public repo, so you do have permissions.

lxbader commented 2 years ago

We are currently stuck with Python 3.7 and pandas 1.3.5 - will upgrade our systems as soon as possible, but it may take a while. In the current configuration, trying to install this combination on our new MacBooks with Apple M1 Pro processors fails: no wheels are found of course, and when trying to build the package locally then oldest-supported-numpy refers us to numpy==1.14.5 which definitely doesn't work out. I created a local copy of oldest-supported-numpy where I made the addition suggested in the original post, and that lets us build pandas 1.3.5 for our systems successfully.

rgommers commented 2 years ago

Ah okay, that makes sense. Can you please try to open a PR? The standard "fork-clone-sendPR" workflow for GitHub definitely works. If you really have an issue with that, please post the diff that works for you.

henryiii commented 2 years ago

How did you get Python 3.7 running on macOS ARM? The ARM patches have never been backported past 3.8 AFAICK. Just curious.

lxbader commented 2 years ago

@rgommers Not sure what's going wrong with me trying to push - new machine so some setup may be sketchy, but it does look like I have SSH access and everything should work, but it doesn't. It's probably easiest to just write the diff here:

numpy==1.21.0; python_version=='3.7' and platform_machine=='arm64' and platform_system=='Darwin' needs to be added to the ARM64 requirements, and the default numpy requirements for 3.7 need to be amended to exclude this combination:

numpy==1.14.5; python_version=='3.7' and (platform_machine!='arm64' or platform_system!='Darwin') and platform_machine!='aarch64' and platform_machine!='loongarch64' and platform_system!='AIX' and platform_python_implementation != 'PyPy'

@henryiii cloning the current pyenv and installing it let us install python 3.7.13 without problems happily!

henryiii commented 2 years ago

You can just edit the file directly in GitHub, that will automatically make a fork and start the PR process. It's the little pencil icon at the top when viewing the file. I'd do it but I can't test it, so it seems safer to let you do it if you can (via that edit button).

That's a build-from-source, plus a few patch releases past the final binary release, so maybe they were accepting fixes for ARM? I'd be a little nervous and would double test everything to make sure it works, but interesting if it does! I wonder if CPython's test suite would pass.