diff --git a/docs/release.rst b/docs/release.rst index 8d36c444..b569015c 100644 --- a/docs/release.rst +++ b/docs/release.rst @@ -31,6 +31,8 @@ Fix By :user:`Elliott Sales de Andrade `, :issue:`487`. * Fix Upgrade to Zstd 1.5.5 due to potential corruption. By :user:`Mark Kittisopikul `, :issue:`429` +* Add version constraint(<2.0) for numpy in zfpy. + By :user:`Tom Liang `, :issue:`540`. Maintenance ~~~~~~~~~~~ diff --git a/numcodecs/zfpy.py b/numcodecs/zfpy.py index 788b1f24..40d6b8e4 100644 --- a/numcodecs/zfpy.py +++ b/numcodecs/zfpy.py @@ -1,9 +1,26 @@ from contextlib import suppress +from importlib.metadata import PackageNotFoundError, version +import warnings _zfpy = None -with suppress(ImportError): - import zfpy as _zfpy +_zfpy_version: tuple = () +with suppress(PackageNotFoundError): + _zfpy_version = tuple(map(int, version("zfpy").split("."))) + +if _zfpy_version: + # Check NumPy version + _numpy_version: tuple = tuple(map(int, version("numpy").split('.'))) + if _numpy_version >= (2, 0, 0) and _zfpy_version <= (1, 0, 1): + _zfpy_version = () + warnings.warn( + "NumPy version >= 2.0.0 detected. The zfpy library is incompatible with this version of NumPy. " + "Please downgrade to NumPy < 2.0.0 or wait for an update from zfpy.", + UserWarning, + ) + else: + with suppress(ImportError): + import zfpy as _zfpy if _zfpy: from .abc import Codec diff --git a/pyproject.toml b/pyproject.toml index c1868168..9826168f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,6 +64,7 @@ msgpack = [ ] zfpy = [ "zfpy>=1.0.0", + "numpy<2.0.0", ] pcodec = [ "pcodec>=0.1.0",