Bug#1136870: python-polsarpro: FTBFS: E ValueError: `dtype` inference failed in `map_blocks`.

Santiago Vila sanvila at debian.org
Sat May 16 17:27:59 BST 2026


Package: src:python-polsarpro
Version: 2026.1.2-1
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

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

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 cannot 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-polsarpro, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
   dh_autoreconf_clean -O--buildsystem=pybuild
   dh_clean -O--buildsystem=pybuild
 debian/rules binary
dh binary --buildsystem=pybuild
   dh_update_autotools_config -O--buildsystem=pybuild
   dh_autoreconf -O--buildsystem=pybuild
   dh_auto_configure -O--buildsystem=pybuild
   dh_auto_build -O--buildsystem=pybuild
I: pybuild plugin_pyproject:142: Building wheel for python3.14 with "build" module
I: pybuild base:385: python3.14 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_polsarpro  
* Building wheel...
running bdist_wheel

[... snipped ...]

/usr/lib/python3/dist-packages/dask/array/reductions.py:2058: in nanquantile
    result = a.map_blocks(
/usr/lib/python3/dist-packages/dask/array/core.py:2705: in map_blocks
    return map_blocks(func, self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/dask/array/core.py:828: in map_blocks
    dtype = apply_infer_dtype(func, args, original_kwargs, "map_blocks")
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

func = <function _custom_quantile at 0x7fe4d208c4a0>
args = [array([[[1.]]], dtype=float32)]
kwargs = {'axis': [2, 1], 'interpolation': None, 'keepdims': False, 'method': 'linear', ...}
funcname = 'map_blocks', suggest_dtype = 'dtype', nout = None

    def apply_infer_dtype(func, args, kwargs, funcname, suggest_dtype="dtype", nout=None):
        """
        Tries to infer output dtype of ``func`` for a small set of input arguments.
    
        Parameters
        ----------
        func: Callable
            Function for which output dtype is to be determined
    
        args: List of array like
            Arguments to the function, which would usually be used. Only attributes
            ``ndim`` and ``dtype`` are used.
    
        kwargs: dict
            Additional ``kwargs`` to the ``func``
    
        funcname: String
            Name of calling function to improve potential error messages
    
        suggest_dtype: None/False or String
            If not ``None`` adds suggestion to potential error message to specify a dtype
            via the specified kwarg. Defaults to ``'dtype'``.
    
        nout: None or Int
            ``None`` if function returns single output, integer if many.
            Defaults to ``None``.
    
        Returns
        -------
        : dtype or List of dtype
            One or many dtypes (depending on ``nout``)
        """
        from dask.array.utils import meta_from_array
    
        # make sure that every arg is an evaluated array
        args = [
            (
                np.ones_like(meta_from_array(x), shape=((1,) * x.ndim), dtype=x.dtype)
                if is_arraylike(x)
                else x
            )
            for x in args
        ]
        try:
            with np.errstate(all="ignore"):
                o = func(*args, **kwargs)
        except Exception as e:
            exc_type, exc_value, exc_traceback = sys.exc_info()
            tb = "".join(traceback.format_tb(exc_traceback))
            suggest = (
                (
                    "Please specify the dtype explicitly using the "
                    "`{dtype}` kwarg.\n\n".format(dtype=suggest_dtype)
                )
                if suggest_dtype
                else ""
            )
            msg = (
                f"`dtype` inference failed in `{funcname}`.\n\n"
                f"{suggest}"
                "Original error is below:\n"
                "------------------------\n"
                f"{e!r}\n\n"
                "Traceback:\n"
                "---------\n"
                f"{tb}"
            )
        else:
            msg = None
        if msg is not None:
>           raise ValueError(msg)
E           ValueError: `dtype` inference failed in `map_blocks`.
E           
E           Please specify the dtype explicitly using the `dtype` kwarg.
E           
E           Original error is below:
E           ------------------------
E           TypeError("nanquantile() got an unexpected keyword argument 'interpolation'")
E           
E           Traceback:
E           ---------
E             File "/usr/lib/python3/dist-packages/dask/array/core.py", line 469, in apply_infer_dtype
E               o = func(*args, **kwargs)
E             File "/usr/lib/python3/dist-packages/dask/array/reductions.py", line 1959, in _custom_quantile
E               return np.nanquantile(
E                      ~~~~~~~~~~~~~~^
E                   a,
E                   ^^
E               ...<5 lines>...
E                   **kwargs,
E                   ^^^^^^^^^
E               )
E               ^

/usr/lib/python3/dist-packages/dask/array/core.py:494: ValueError
______________________________ test_pauli_rgb[T3] ______________________________

synthetic_poldata = {'T3': <xarray.Dataset> Size: 592kB
Dimensions:  (y: 128, x: 128)
Coordinates:
  * y        (y) int64 1kB 0 1 2 3 4 5 ...complex64 131kB dask.array<chunksize=(16, 16), meta=np.ndarray>
Attributes:
    poltype:      T3
    description:  ...}

    @pytest.mark.parametrize("synthetic_poldata", ["S", "C3", "T3"], indirect=True)
    def test_pauli_rgb(synthetic_poldata):
        input_data = synthetic_poldata
        for _, ds in input_data.items():
            input_data = ds.chunk(x=64, y=64)
>           res = pauli_rgb(input_data=input_data)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/test_util.py:319: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
polsarpro/util.py:665: in pauli_rgb
    clip_val = rgb.quantile(dim=("x", "y"), q=q).astype("float32").drop_vars("quantile")
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray/core/dataarray.py:5407: in quantile
    ds = self._to_temp_dataset().quantile(
/usr/lib/python3/dist-packages/xarray/core/dataset.py:8299: in quantile
    variables[name] = var.quantile(
/usr/lib/python3/dist-packages/xarray/core/variable.py:2035: in quantile
    result = apply_ufunc(
/usr/lib/python3/dist-packages/xarray/computation/apply_ufunc.py:1279: in apply_ufunc
    return variables_vfunc(*args)
           ^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray/computation/apply_ufunc.py:820: in apply_variable_ufunc
    result_data = func(*input_data)
                  ^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray/core/variable.py:2028: in _wrapper
    return xp.moveaxis(_quantile_func(npa, **kwargs), 0, -1)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray/core/nputils.py:242: in f
    result = getattr(npmodule, name)(values, axis=axis, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/dask/array/core.py:1769: in __array_function__
    return da_func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/dask/array/reductions.py:2058: in nanquantile
    result = a.map_blocks(
/usr/lib/python3/dist-packages/dask/array/core.py:2705: in map_blocks
    return map_blocks(func, self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/dask/array/core.py:828: in map_blocks
    dtype = apply_infer_dtype(func, args, original_kwargs, "map_blocks")
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

func = <function _custom_quantile at 0x7fe4d208c4a0>
args = [array([[[1.]]], dtype=float32)]
kwargs = {'axis': [2, 1], 'interpolation': None, 'keepdims': False, 'method': 'linear', ...}
funcname = 'map_blocks', suggest_dtype = 'dtype', nout = None

    def apply_infer_dtype(func, args, kwargs, funcname, suggest_dtype="dtype", nout=None):
        """
        Tries to infer output dtype of ``func`` for a small set of input arguments.
    
        Parameters
        ----------
        func: Callable
            Function for which output dtype is to be determined
    
        args: List of array like
            Arguments to the function, which would usually be used. Only attributes
            ``ndim`` and ``dtype`` are used.
    
        kwargs: dict
            Additional ``kwargs`` to the ``func``
    
        funcname: String
            Name of calling function to improve potential error messages
    
        suggest_dtype: None/False or String
            If not ``None`` adds suggestion to potential error message to specify a dtype
            via the specified kwarg. Defaults to ``'dtype'``.
    
        nout: None or Int
            ``None`` if function returns single output, integer if many.
            Defaults to ``None``.
    
        Returns
        -------
        : dtype or List of dtype
            One or many dtypes (depending on ``nout``)
        """
        from dask.array.utils import meta_from_array
    
        # make sure that every arg is an evaluated array
        args = [
            (
                np.ones_like(meta_from_array(x), shape=((1,) * x.ndim), dtype=x.dtype)
                if is_arraylike(x)
                else x
            )
            for x in args
        ]
        try:
            with np.errstate(all="ignore"):
                o = func(*args, **kwargs)
        except Exception as e:
            exc_type, exc_value, exc_traceback = sys.exc_info()
            tb = "".join(traceback.format_tb(exc_traceback))
            suggest = (
                (
                    "Please specify the dtype explicitly using the "
                    "`{dtype}` kwarg.\n\n".format(dtype=suggest_dtype)
                )
                if suggest_dtype
                else ""
            )
            msg = (
                f"`dtype` inference failed in `{funcname}`.\n\n"
                f"{suggest}"
                "Original error is below:\n"
                "------------------------\n"
                f"{e!r}\n\n"
                "Traceback:\n"
                "---------\n"
                f"{tb}"
            )
        else:
            msg = None
        if msg is not None:
>           raise ValueError(msg)
E           ValueError: `dtype` inference failed in `map_blocks`.
E           
E           Please specify the dtype explicitly using the `dtype` kwarg.
E           
E           Original error is below:
E           ------------------------
E           TypeError("nanquantile() got an unexpected keyword argument 'interpolation'")
E           
E           Traceback:
E           ---------
E             File "/usr/lib/python3/dist-packages/dask/array/core.py", line 469, in apply_infer_dtype
E               o = func(*args, **kwargs)
E             File "/usr/lib/python3/dist-packages/dask/array/reductions.py", line 1959, in _custom_quantile
E               return np.nanquantile(
E                      ~~~~~~~~~~~~~~^
E                   a,
E                   ^^
E               ...<5 lines>...
E                   **kwargs,
E                   ^^^^^^^^^
E               )
E               ^

/usr/lib/python3/dist-packages/dask/array/core.py:494: ValueError
=============================== warnings summary ===============================
tests/test_io.py::test_s_matrix
  <frozen importlib._bootstrap>:488: RuntimeWarning: numpy.ndarray size changed, may indicate binary incompatibility. Expected 16 from C header, got 96 from PyObject

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_util.py::test_pauli_rgb[S] - ValueError: `dtype` inference ...
FAILED tests/test_util.py::test_pauli_rgb[C3] - ValueError: `dtype` inference...
FAILED tests/test_util.py::test_pauli_rgb[T3] - ValueError: `dtype` inference...
=================== 3 failed, 69 passed, 1 warning in 4.93s ====================
E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_polsarpro/build; python3.13 -m pytest tests
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 3.13" --parallel=2 returned exit code 13
make: *** [debian/rules:6: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2
--------------------------------------------------------------------------------



More information about the Pkg-grass-devel mailing list