openTSNE icon indicating copy to clipboard operation
openTSNE copied to clipboard

oldest-supported-numpy depricated

Open sdamrich opened this issue 10 months ago • 2 comments

Hi Pavlin,

for packages that depend on openTSNE, it is somewhat cumbersome that openTSNE requires the oldest supported numpy version for the given python version, because this can easily lead to conflicts. I assume this was needed for the C API. But given the deprecation notice on https://github.com/scipy/oldest-supported-numpy, I wonder if it is still necessary.

sdamrich avatar Apr 23 '24 07:04 sdamrich

Hi Sebastian, thanks for bringing this up. I wasn't aware of the deprecation of oldest-supported-numpy, so I guess I need to update the dependencies.

However, the oldest-supported-numpy really shouldn't interfere with your environment. oldest-supported-numpy is only used at build-time, i.e., when buliding the wheels on the CI system. When installing, this line is used, so it definitely shouldn't downgrade your numpy version if you run pip install openTSNE.

Could you please list the exact steps that cause the conflict you're experiencing?

pavlin-policar avatar Apr 25 '24 08:04 pavlin-policar

Hi Pavlin, we have a package (ne-spectrum), which depends on openTSNE. It has other dependencies which require a minimal numpy version of at least 1.17. Here is the relevant excerpt from ne-spectrum's pyproject.toml file

dependencies = [ "numpy", "openTSNE", "contrastive-ne>=0.3.8", "matplotlib", "pillow" ]

When we install ne-spectrum via pip install . and have Python 3.10, we get an error like this:

ERROR: Cannot install contrastive-ne==0.3.8, matplotlib==3.8.4, ne-spectrum and ne-spectrum==0.0.1 because these package versions have conflicting dependencies.

The conflict is caused by: ne-spectrum 0.0.1 depends on numpy contrastive-ne 0.3.8 depends on numpy>=1.17 matplotlib 3.8.4 depends on numpy>=1.21 opentsne 0.3.9 depends on numpy==1.16.*

openTSNE requires a pretty exact, old numpy version. Moreover, when we try the same thing in an environment that has Python 3.12, there is no error. Therefore, I thought this to be due to oldest-supported-numpy (newer Python --> newer oldest-supported-numpy). We simply went with requiring python>=3.12 for our ne-spectrum.

sdamrich avatar May 06 '24 15:05 sdamrich

I've added numpy 2.x support in v1.0.2, released today. Please verify that everything works on your end, and reopen as needed.

pavlin-policar avatar Aug 13 '24 11:08 pavlin-policar