aesara-devs / aesara

Aesara is a Python library for defining, optimizing, and efficiently evaluating mathematical expressions involving multi-dimensional arrays.
https://aesara.readthedocs.io
Other
1.17k stars 156 forks source link

Import aesara fails with numpy 2.0.dev #1526

Open oscarbenjamin opened 5 months ago

oscarbenjamin commented 5 months ago

Description of your problem or feature request

I found this while investigating https://github.com/sympy/sympy/issues/26094.

With the numpy nightly builds for upcoming numpy 2.0 Aesara fails to import. Looks like it might be an easy fix though from the suggestion in the error message.

The nightly build can be installed with:

pip install -i https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy

Demonstration:

>>> import aesara
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/oscar/.pyenv/versions/sympy-3.11.git/lib/python3.11/site-packages/aesara/__init__.py", line 120, in <module>
    from aesara import scalar, tensor
  File "/home/oscar/.pyenv/versions/sympy-3.11.git/lib/python3.11/site-packages/aesara/tensor/__init__.py", line 105, in <module>
    from aesara.tensor import sharedvar  # noqa
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/oscar/.pyenv/versions/sympy-3.11.git/lib/python3.11/site-packages/aesara/tensor/sharedvar.py", line 8, in <module>
    from aesara.tensor.type import TensorType
  File "/home/oscar/.pyenv/versions/sympy-3.11.git/lib/python3.11/site-packages/aesara/tensor/type.py", line 787, in <module>
    cscalar = TensorType("complex64", ())
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/oscar/.pyenv/versions/sympy-3.11.git/lib/python3.11/site-packages/aesara/tensor/type.py", line 104, in __init__
    if np.obj2sctype(dtype) is None:
       ^^^^^^^^^^^^^
  File "/home/oscar/.pyenv/versions/sympy-3.11.git/lib/python3.11/site-packages/numpy/__init__.py", line 396, in __getattr__
    raise AttributeError(
AttributeError: `np.obj2sctype` was removed in the NumPy 2.0 release. Use `np.dtype(obj).type` instead.
brandonwillard commented 5 months ago

Thanks for the heads-up!