alkaline-ml / pmdarima

A statistical library designed to fill the void in Python's time series analysis capabilities, including the equivalent of R's auto.arima function.
https://www.alkaline-ml.com/pmdarima
MIT License
1.6k stars 234 forks source link

pmdarima is incompatible with numpy>=2.0.0 #577

Open nashafa opened 5 months ago

nashafa commented 5 months ago

Describe the bug

Changes to numpy in v2.0.0 break the current version of pmdarima. Numpy 2.0 has significant breaking changes to its internal API, some of which are documented in their release notes.

To Reproduce

Install pmdarima without pinning numpy (i.e. install pmdarima with numpy>=2.0.0). Import pmdarima.

Versions

System:
    python: 3.12.4 (main, Jun 18 2024, 10:50:53) [Clang 15.0.0 (clang-1500.3.9.4)]
executable: /.../.venv/bin/python
   machine: macOS-14.5-arm64-arm-64bit

Python dependencies:
 setuptools: 70.0.0
        pip: None
    sklearn: 1.5.0
statsmodels: 0.14.2
      numpy: 1.26.4 # actually 2.0.0, but pmdarima won't import to get this output unless numpy is downgraded
      scipy: 1.13.1 # actually 1.14.2, 1.13 doesn't support numpy 2.0
     Cython: 3.0.10
     pandas: 2.2.2
     joblib: 1.4.2
   pmdarima: 2.0.4

Expected Behavior

Pmdarima should import and run as normal.

Actual Behavior

Pmdarima does not import.

Python 3.12.4 (main, Jun 18 2024, 10:50:53) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pmdarima
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/.../.venv/lib/python3.12/site-packages/pmdarima/__init__.py", line 52, in <module>
    from .arima import auto_arima, ARIMA, AutoARIMA, StepwiseContext, decompose
  File "/.../.venv/lib/python3.12/site-packages/pmdarima/arima/__init__.py", line 5, in <module>
    from .approx import *
  File "/.../.venv/lib/python3.12/site-packages/pmdarima/arima/approx.py", line 9, in <module>
    from ..utils.array import c, check_endog
  File "/.../.venv/lib/python3.12/site-packages/pmdarima/utils/__init__.py", line 5, in <module>
    from .array import *
  File "/.../.venv/lib/python3.12/site-packages/pmdarima/utils/array.py", line 13, in <module>
    from ._array import C_intgrt_vec
  File "pmdarima/utils/_array.pyx", line 1, in init pmdarima.utils._array
ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject

Additional Context

I'm not too familiar with the inner workings or development of pmdarima or numpy. Please let me know if there's any further information I can provide or if there's something specific I can look into to fix any potential issues.

geee28 commented 5 months ago

Hi,

This issue may take a while to solve. The workaround is by downgrading the numpy version to 1.26.4 (and I have pandas 2.2.2, seems to work for me).

aaronreidsmith commented 5 months ago

I appreciate the bug report and workaround! Looks like we need to be building against numpy 2.0. We'll work on this as time allows with day jobs. As always we are open to PRs!

bbalouki commented 4 months ago

Hi,

This issue may take a while to solve. The workaround is by downgrading the numpy version to 1.26.4 (and I have pandas 2.2.2, seems to work for me).

Yeah, I have done the same thing and it seems to work. but I find it useful to delete pip caches pip cache purge before installing the new version of numpy

AbdullahTheScientist commented 3 months ago

thanks

skyth540 commented 2 months ago

I uninstalled numpy, purged the cache, and pip install numpy==1.26.4

I'm still getting ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject from import pmdarima as pm

ic commented 1 month ago

Downgrading Numpy to numpy<2 on Python 3.12 worked here.

nashafa commented 1 month ago

I just want to add that this is blocking support for Python 3.13. NumPy 1.26.4 limits support to Python<3.13. Support for Python 3.13 is added in NumPy 2.1.0.

dennisbader commented 2 weeks ago

Hi all, we at Darts are also looking now into adding support for numpy>=2.0.0. Since pmdarima is one of our dependencies, I wanted to ask whether you plan to add support in the near future?

tgsmith61591 commented 2 weeks ago

Hey everyone, thanks for using pmdarima. I realize this has been open for some time, and has been a bit of a thorn in the side for everyone.

It's not a good excuse, but I have been very busy with my day job and (young) family lately. I'm going to commit to carve out some time for this as soon as possible. Hope to get this out for everyone soon. Thanks for your patience to date.