Bug#1095371: python-dtcwt: FTBFS: E AttributeError: `np.asfarray` was removed in the NumPy 2.0 release.

Santiago Vila sanvila at debian.org
Fri Feb 7 12:12:24 GMT 2025


Package: src:python-dtcwt
Version: 0.14.0-1
Severity: serious
Tags: ftbfs trixie sid

Dear maintainer:

During a rebuild of all packages in unstable, your package failed to build:

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --with sphinxdoc --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
I: pybuild base:311: python3.12 setup.py clean 
/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:261: UserWarning: Unknown distribution option: 'tests_require'
  warnings.warn(msg)
running clean
removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_dtcwt/build' (and everything under it)
'build/bdist.linux-x86_64' does not exist -- can't clean it
'build/scripts-3.12' does not exist -- can't clean it
I: pybuild base:311: python3.13 setup.py clean 
/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:261: UserWarning: Unknown distribution option: 'tests_require'
  warnings.warn(msg)
running clean

[... snipped ...]

dtcwt/compat.py:241: in dtwavexfm3
    res = trans.forward(X, nlevels, include_scale, discard_level_1)
dtcwt/numpy/transform3d.py:82: in forward
    X = np.atleast_3d(asfarray(X))
dtcwt/utils.py:105: in asfarray
    return np.asfarray(X, dtype=X.dtype)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

attr = 'asfarray'

    def __getattr__(attr):
        # Warn for expired attributes
        import warnings
    
        if attr == "linalg":
            import numpy.linalg as linalg
            return linalg
        elif attr == "fft":
            import numpy.fft as fft
            return fft
        elif attr == "dtypes":
            import numpy.dtypes as dtypes
            return dtypes
        elif attr == "random":
            import numpy.random as random
            return random
        elif attr == "polynomial":
            import numpy.polynomial as polynomial
            return polynomial
        elif attr == "ma":
            import numpy.ma as ma
            return ma
        elif attr == "ctypeslib":
            import numpy.ctypeslib as ctypeslib
            return ctypeslib
        elif attr == "exceptions":
            import numpy.exceptions as exceptions
            return exceptions
        elif attr == "testing":
            import numpy.testing as testing
            return testing
        elif attr == "matlib":
            import numpy.matlib as matlib
            return matlib
        elif attr == "f2py":
            import numpy.f2py as f2py
            return f2py
        elif attr == "typing":
            import numpy.typing as typing
            return typing
        elif attr == "rec":
            import numpy.rec as rec
            return rec
        elif attr == "char":
            import numpy.char as char
            return char
        elif attr == "array_api":
            raise AttributeError("`numpy.array_api` is not available from "
                                 "numpy 2.0 onwards", name=None)
        elif attr == "core":
            import numpy.core as core
            return core
        elif attr == "strings":
            import numpy.strings as strings
            return strings
        elif attr == "distutils":
            if 'distutils' in __numpy_submodules__:
                import numpy.distutils as distutils
                return distutils
            else:
                raise AttributeError("`numpy.distutils` is not available from "
                                     "Python 3.12 onwards", name=None)
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
            raise AttributeError(__former_attrs__[attr], name=None)
    
        if attr in __expired_attributes__:
>           raise AttributeError(
                f"`np.{attr}` was removed in the NumPy 2.0 release. "
                f"{__expired_attributes__[attr]}",
                name=None
            )
E           AttributeError: `np.asfarray` was removed in the NumPy 2.0 release. Use `np.asarray` with a proper dtype instead.

/usr/lib/python3/dist-packages/numpy/__init__.py:400: AttributeError
______________________________ test_float32_recon ______________________________

    def test_float32_recon():
        # Check that an float32 input is correctly output as float32
>       Yl, Yh = dtwavexfm3(ellipsoid.astype(np.float32))

tests/test_xfm3.py:145: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dtcwt/compat.py:241: in dtwavexfm3
    res = trans.forward(X, nlevels, include_scale, discard_level_1)
dtcwt/numpy/transform3d.py:82: in forward
    X = np.atleast_3d(asfarray(X))
dtcwt/utils.py:105: in asfarray
    return np.asfarray(X, dtype=X.dtype)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

attr = 'asfarray'

    def __getattr__(attr):
        # Warn for expired attributes
        import warnings
    
        if attr == "linalg":
            import numpy.linalg as linalg
            return linalg
        elif attr == "fft":
            import numpy.fft as fft
            return fft
        elif attr == "dtypes":
            import numpy.dtypes as dtypes
            return dtypes
        elif attr == "random":
            import numpy.random as random
            return random
        elif attr == "polynomial":
            import numpy.polynomial as polynomial
            return polynomial
        elif attr == "ma":
            import numpy.ma as ma
            return ma
        elif attr == "ctypeslib":
            import numpy.ctypeslib as ctypeslib
            return ctypeslib
        elif attr == "exceptions":
            import numpy.exceptions as exceptions
            return exceptions
        elif attr == "testing":
            import numpy.testing as testing
            return testing
        elif attr == "matlib":
            import numpy.matlib as matlib
            return matlib
        elif attr == "f2py":
            import numpy.f2py as f2py
            return f2py
        elif attr == "typing":
            import numpy.typing as typing
            return typing
        elif attr == "rec":
            import numpy.rec as rec
            return rec
        elif attr == "char":
            import numpy.char as char
            return char
        elif attr == "array_api":
            raise AttributeError("`numpy.array_api` is not available from "
                                 "numpy 2.0 onwards", name=None)
        elif attr == "core":
            import numpy.core as core
            return core
        elif attr == "strings":
            import numpy.strings as strings
            return strings
        elif attr == "distutils":
            if 'distutils' in __numpy_submodules__:
                import numpy.distutils as distutils
                return distutils
            else:
                raise AttributeError("`numpy.distutils` is not available from "
                                     "Python 3.12 onwards", name=None)
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
            raise AttributeError(__former_attrs__[attr], name=None)
    
        if attr in __expired_attributes__:
>           raise AttributeError(
                f"`np.{attr}` was removed in the NumPy 2.0 release. "
                f"{__expired_attributes__[attr]}",
                name=None
            )
E           AttributeError: `np.asfarray` was removed in the NumPy 2.0 release. Use `np.asarray` with a proper dtype instead.

/usr/lib/python3/dist-packages/numpy/__init__.py:400: AttributeError
____________________ test_level_4_recon_discarding_level_1 _____________________

    def test_level_4_recon_discarding_level_1():
        # Test for non-perfect but reasonable reconstruction
>       Yl, Yh = dtwavexfm3(ellipsoid, 4, discard_level_1=True)

tests/test_xfm3.py:154: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dtcwt/compat.py:241: in dtwavexfm3
    res = trans.forward(X, nlevels, include_scale, discard_level_1)
dtcwt/numpy/transform3d.py:82: in forward
    X = np.atleast_3d(asfarray(X))
dtcwt/utils.py:105: in asfarray
    return np.asfarray(X, dtype=X.dtype)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

attr = 'asfarray'

    def __getattr__(attr):
        # Warn for expired attributes
        import warnings
    
        if attr == "linalg":
            import numpy.linalg as linalg
            return linalg
        elif attr == "fft":
            import numpy.fft as fft
            return fft
        elif attr == "dtypes":
            import numpy.dtypes as dtypes
            return dtypes
        elif attr == "random":
            import numpy.random as random
            return random
        elif attr == "polynomial":
            import numpy.polynomial as polynomial
            return polynomial
        elif attr == "ma":
            import numpy.ma as ma
            return ma
        elif attr == "ctypeslib":
            import numpy.ctypeslib as ctypeslib
            return ctypeslib
        elif attr == "exceptions":
            import numpy.exceptions as exceptions
            return exceptions
        elif attr == "testing":
            import numpy.testing as testing
            return testing
        elif attr == "matlib":
            import numpy.matlib as matlib
            return matlib
        elif attr == "f2py":
            import numpy.f2py as f2py
            return f2py
        elif attr == "typing":
            import numpy.typing as typing
            return typing
        elif attr == "rec":
            import numpy.rec as rec
            return rec
        elif attr == "char":
            import numpy.char as char
            return char
        elif attr == "array_api":
            raise AttributeError("`numpy.array_api` is not available from "
                                 "numpy 2.0 onwards", name=None)
        elif attr == "core":
            import numpy.core as core
            return core
        elif attr == "strings":
            import numpy.strings as strings
            return strings
        elif attr == "distutils":
            if 'distutils' in __numpy_submodules__:
                import numpy.distutils as distutils
                return distutils
            else:
                raise AttributeError("`numpy.distutils` is not available from "
                                     "Python 3.12 onwards", name=None)
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
            raise AttributeError(__former_attrs__[attr], name=None)
    
        if attr in __expired_attributes__:
>           raise AttributeError(
                f"`np.{attr}` was removed in the NumPy 2.0 release. "
                f"{__expired_attributes__[attr]}",
                name=None
            )
E           AttributeError: `np.asfarray` was removed in the NumPy 2.0 release. Use `np.asarray` with a proper dtype instead.

/usr/lib/python3/dist-packages/numpy/__init__.py:400: AttributeError
_______________________ test_level_4_discarding_level_1 ________________________

    def test_level_4_discarding_level_1():
        # Test that level >= 2 highpasses are identical
>       Yl1, Yh1 = dtwavexfm3(ellipsoid, 4, discard_level_1=True)

tests/test_xfm3.py:163: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dtcwt/compat.py:241: in dtwavexfm3
    res = trans.forward(X, nlevels, include_scale, discard_level_1)
dtcwt/numpy/transform3d.py:82: in forward
    X = np.atleast_3d(asfarray(X))
dtcwt/utils.py:105: in asfarray
    return np.asfarray(X, dtype=X.dtype)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

attr = 'asfarray'

    def __getattr__(attr):
        # Warn for expired attributes
        import warnings
    
        if attr == "linalg":
            import numpy.linalg as linalg
            return linalg
        elif attr == "fft":
            import numpy.fft as fft
            return fft
        elif attr == "dtypes":
            import numpy.dtypes as dtypes
            return dtypes
        elif attr == "random":
            import numpy.random as random
            return random
        elif attr == "polynomial":
            import numpy.polynomial as polynomial
            return polynomial
        elif attr == "ma":
            import numpy.ma as ma
            return ma
        elif attr == "ctypeslib":
            import numpy.ctypeslib as ctypeslib
            return ctypeslib
        elif attr == "exceptions":
            import numpy.exceptions as exceptions
            return exceptions
        elif attr == "testing":
            import numpy.testing as testing
            return testing
        elif attr == "matlib":
            import numpy.matlib as matlib
            return matlib
        elif attr == "f2py":
            import numpy.f2py as f2py
            return f2py
        elif attr == "typing":
            import numpy.typing as typing
            return typing
        elif attr == "rec":
            import numpy.rec as rec
            return rec
        elif attr == "char":
            import numpy.char as char
            return char
        elif attr == "array_api":
            raise AttributeError("`numpy.array_api` is not available from "
                                 "numpy 2.0 onwards", name=None)
        elif attr == "core":
            import numpy.core as core
            return core
        elif attr == "strings":
            import numpy.strings as strings
            return strings
        elif attr == "distutils":
            if 'distutils' in __numpy_submodules__:
                import numpy.distutils as distutils
                return distutils
            else:
                raise AttributeError("`numpy.distutils` is not available from "
                                     "Python 3.12 onwards", name=None)
    
        if attr in __future_scalars__:
            # And future warnings for those that will change, but also give
            # the AttributeError
            warnings.warn(
                f"In the future `np.{attr}` will be defined as the "
                "corresponding NumPy scalar.", FutureWarning, stacklevel=2)
    
        if attr in __former_attrs__:
            raise AttributeError(__former_attrs__[attr], name=None)
    
        if attr in __expired_attributes__:
>           raise AttributeError(
                f"`np.{attr}` was removed in the NumPy 2.0 release. "
                f"{__expired_attributes__[attr]}",
                name=None
            )
E           AttributeError: `np.asfarray` was removed in the NumPy 2.0 release. Use `np.asarray` with a proper dtype instead.

/usr/lib/python3/dist-packages/numpy/__init__.py:400: AttributeError
=========================== short test summary info ============================
FAILED tests/test_againstmatlab.py::test_coldfilt - AttributeError: `np.asfar...
FAILED tests/test_againstmatlab.py::test_dtwavexfm2 - AttributeError: `np.asf...
FAILED tests/test_againstmatlab.py::test_dtwavexfm2b - AttributeError: `np.as...
FAILED tests/test_againstmatlab.py::test_rescale_highpass - AttributeError: `...
FAILED tests/test_againstmatlab.py::test_transform3d_numpy - AttributeError: ...
FAILED tests/test_coldfilt.py::test_odd_filter - AttributeError: `np.asfarray...
FAILED tests/test_coldfilt.py::test_different_size - AttributeError: `np.asfa...
FAILED tests/test_coldfilt.py::test_bad_input_size - AttributeError: `np.asfa...
FAILED tests/test_coldfilt.py::test_good_input_size - AttributeError: `np.asf...
FAILED tests/test_coldfilt.py::test_good_input_size_non_orthogonal - Attribut...
FAILED tests/test_coldfilt.py::test_output_size - AttributeError: `np.asfarra...
FAILED tests/test_colfilter.py::test_odd_size - AttributeError: `np.asfarray`...
FAILED tests/test_colfilter.py::test_even_size - AttributeError: `np.asfarray...
FAILED tests/test_colfilter.py::test_qshift - AttributeError: `np.asfarray` w...
FAILED tests/test_colfilter.py::test_biort - AttributeError: `np.asfarray` wa...
FAILED tests/test_colfilter.py::test_odd_size_non_array - AttributeError: `np...
FAILED tests/test_colfilter.py::test_even_size_non_array - AttributeError: `n...
FAILED tests/test_colifilt.py::test_odd_filter - AttributeError: `np.asfarray...
FAILED tests/test_colifilt.py::test_different_size_h - AttributeError: `np.as...
FAILED tests/test_colifilt.py::test_zero_input - AttributeError: `np.asfarray...
FAILED tests/test_colifilt.py::test_bad_input_size - AttributeError: `np.asfa...
FAILED tests/test_colifilt.py::test_good_input_size - AttributeError: `np.asf...
FAILED tests/test_colifilt.py::test_output_size - AttributeError: `np.asfarra...
FAILED tests/test_colifilt.py::test_non_orthogonal_input - AttributeError: `n...
FAILED tests/test_colifilt.py::test_output_size_non_mult_4 - AttributeError: ...
FAILED tests/test_colifilt.py::test_non_orthogonal_input_non_mult_4 - Attribu...
FAILED tests/test_ifm1.py::test_reconstruct - AttributeError: `np.asfarray` w...
FAILED tests/test_ifm1.py::test_reconstruct_2d - AttributeError: `np.asfarray...
FAILED tests/test_ifm1.py::test_float32_input - AttributeError: `np.asfarray`...
FAILED tests/test_ifm2.py::test_reconstruct - AttributeError: `np.asfarray` w...
FAILED tests/test_ifm2.py::test_reconstruct_crop - AttributeError: `np.asfarr...
FAILED tests/test_ifm2.py::test_reconstruct_custom_filter - AttributeError: `...
FAILED tests/test_ifm2.py::test_float32_input - AttributeError: `np.asfarray`...
FAILED tests/test_registration.py::test_estimatereg - AttributeError: `np.asf...
FAILED tests/test_utils.py::test_complex_type_for_complex - AttributeError: `...
FAILED tests/test_utils.py::test_complex_type_for_float - AttributeError: `np...
FAILED tests/test_xfm1.py::test_simple - AttributeError: `np.asfarray` was re...
FAILED tests/test_xfm1.py::test_simple_with_no_levels - AttributeError: `np.a...
FAILED tests/test_xfm1.py::test_simple_with_scale - AttributeError: `np.asfar...
FAILED tests/test_xfm1.py::test_simple_with_scale_and_no_levels - AttributeEr...
FAILED tests/test_xfm1.py::test_perfect_recon - AttributeError: `np.asfarray`...
FAILED tests/test_xfm1.py::test_simple_custom_filter - AttributeError: `np.as...
FAILED tests/test_xfm1.py::test_single_level - AttributeError: `np.asfarray` ...
FAILED tests/test_xfm1.py::test_non_multiple_of_two - AttributeError: `np.asf...
FAILED tests/test_xfm1.py::test_2d - AttributeError: `np.asfarray` was remove...
FAILED tests/test_xfm1.py::test_integer_input - AttributeError: `np.asfarray`...
FAILED tests/test_xfm1.py::test_integer_perfect_recon - AttributeError: `np.a...
FAILED tests/test_xfm1.py::test_float32_input - AttributeError: `np.asfarray`...
FAILED tests/test_xfm2.py::test_simple - AttributeError: `np.asfarray` was re...
FAILED tests/test_xfm2.py::test_specific_wavelet - AttributeError: `np.asfarr...
FAILED tests/test_xfm2.py::test_1d - AttributeError: `np.asfarray` was remove...
FAILED tests/test_xfm2.py::test_3d - AttributeError: `np.asfarray` was remove...
FAILED tests/test_xfm2.py::test_simple_w_scale - AttributeError: `np.asfarray...
FAILED tests/test_xfm2.py::test_odd_rows - AttributeError: `np.asfarray` was ...
FAILED tests/test_xfm2.py::test_odd_rows_w_scale - AttributeError: `np.asfarr...
FAILED tests/test_xfm2.py::test_odd_cols - AttributeError: `np.asfarray` was ...
FAILED tests/test_xfm2.py::test_odd_cols_w_scale - AttributeError: `np.asfarr...
FAILED tests/test_xfm2.py::test_odd_rows_and_cols - AttributeError: `np.asfar...
FAILED tests/test_xfm2.py::test_odd_rows_and_cols_w_scale - AttributeError: `...
FAILED tests/test_xfm2.py::test_rot_symm_modified - AttributeError: `np.asfar...
FAILED tests/test_xfm2.py::test_0_levels - AttributeError: `np.asfarray` was ...
FAILED tests/test_xfm2.py::test_0_levels_w_scale - AttributeError: `np.asfarr...
FAILED tests/test_xfm2.py::test_integer_input - AttributeError: `np.asfarray`...
FAILED tests/test_xfm2.py::test_integer_perfect_recon - AttributeError: `np.a...
FAILED tests/test_xfm2.py::test_float32_input - AttributeError: `np.asfarray`...
FAILED tests/test_xfm3.py::test_simple_level_1_xfm - AttributeError: `np.asfa...
FAILED tests/test_xfm3.py::test_simple_level_1_recon - AttributeError: `np.as...
FAILED tests/test_xfm3.py::test_simple_level_1_recon_haar - AttributeError: `...
FAILED tests/test_xfm3.py::test_simple_level_2_xfm - AttributeError: `np.asfa...
FAILED tests/test_xfm3.py::test_simple_level_2_recon - AttributeError: `np.as...
FAILED tests/test_xfm3.py::test_simple_level_4_xfm - AttributeError: `np.asfa...
FAILED tests/test_xfm3.py::test_simple_level_4_recon - AttributeError: `np.as...
FAILED tests/test_xfm3.py::test_simple_level_4_recon_custom_wavelets - Attrib...
FAILED tests/test_xfm3.py::test_simple_level_4_xfm_ext_mode_8 - AttributeErro...
FAILED tests/test_xfm3.py::test_simple_level_4_recon_ext_mode_8 - AttributeEr...
FAILED tests/test_xfm3.py::test_simple_level_4_xfm_ext_mode_4 - AttributeErro...
FAILED tests/test_xfm3.py::test_simple_level_4_recon_ext_mode_4 - AttributeEr...
FAILED tests/test_xfm3.py::test_integer_input - AttributeError: `np.asfarray`...
FAILED tests/test_xfm3.py::test_integer_perfect_recon - AttributeError: `np.a...
FAILED tests/test_xfm3.py::test_float32_input - AttributeError: `np.asfarray`...
FAILED tests/test_xfm3.py::test_float32_recon - AttributeError: `np.asfarray`...
FAILED tests/test_xfm3.py::test_level_4_recon_discarding_level_1 - AttributeE...
FAILED tests/test_xfm3.py::test_level_4_discarding_level_1 - AttributeError: ...
================== 83 failed, 42 passed, 214 skipped in 1.79s ==================
E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_dtcwt/build; python3.13 -m pytest tests
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.13" returned exit code 13
make: *** [debian/rules:12: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here:

https://people.debian.org/~sanvila/build-logs/202502/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you could not reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:python-dtcwt, so that this is still
visible in the BTS web page for this package.

Thanks.



More information about the debian-science-maintainers mailing list