Bug#1114363: sarsen: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13
Santiago Vila
sanvila at debian.org
Fri Sep 5 19:25:50 BST 2025
Package: src:sarsen
Version: 0.9.4+ds-1
Severity: serious
Tags: ftbfs forky sid
Dear maintainer:
During a rebuild of all packages in unstable, your package failed to build.
Below you will find how the build ends (probably the most relevant part,
but not necessarily). If required, the full build log is available here:
https://people.debian.org/~sanvila/build-logs/202509/
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:sarsen, 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:129: Building wheel for python3.13 with "build" module
I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13
* Building wheel...
[... snipped ...]
where : array_like of bool, optional
Elements to compare for the minimum. See `~numpy.ufunc.reduce`
for details.
.. versionadded:: 1.22.0
Returns
-------
nanmin : ndarray
An array with the same shape as `a`, with the specified axis
removed. If `a` is a 0-d array, or if axis is None, an ndarray
scalar is returned. The same dtype as `a` is returned.
See Also
--------
nanmax :
The maximum value of an array along a given axis, ignoring any NaNs.
amin :
The minimum value of an array along a given axis, propagating any NaNs.
fmin :
Element-wise minimum of two arrays, ignoring any NaNs.
minimum :
Element-wise minimum of two arrays, propagating any NaNs.
isnan :
Shows which elements are Not a Number (NaN).
isfinite:
Shows which elements are neither NaN nor infinity.
amax, fmax, maximum
Notes
-----
NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
(IEEE 754). This means that Not a Number is not equivalent to infinity.
Positive infinity is treated as a very large number and negative
infinity is treated as a very small (i.e. negative) number.
If the input has a integer type the function is equivalent to np.min.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, np.nan]])
>>> np.nanmin(a)
1.0
>>> np.nanmin(a, axis=0)
array([1., 2.])
>>> np.nanmin(a, axis=1)
array([1., 3.])
When positive infinity and negative infinity are present:
>>> np.nanmin([1, 2, np.nan, np.inf])
1.0
>>> np.nanmin([1, 2, np.nan, -np.inf])
-inf
"""
kwargs = {}
if keepdims is not np._NoValue:
kwargs['keepdims'] = keepdims
if initial is not np._NoValue:
kwargs['initial'] = initial
if where is not np._NoValue:
kwargs['where'] = where
if type(a) is np.ndarray and a.dtype != np.object_:
# Fast, but not safe for subclasses of ndarray, or object arrays,
# which do not implement isnan (gh-9009), or fmin correctly (gh-8975)
> res = np.fmin.reduce(a, axis=axis, out=out, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E ValueError: zero-size array to reduction operation fmin which has no identity
/usr/lib/python3/dist-packages/numpy/lib/_nanfunctions_impl.py:357: ValueError
______________________________ test_product_info _______________________________
def test_product_info() -> None:
expected_geospatial_bbox = [
11.86800305333565,
40.87886713841886,
15.32209672548896,
42.78115380313222,
]
product = sentinel1.Sentinel1SarProduct(str(DATA_PATHS[0]))
> res = product.product_info()
^^^^^^^^^^^^^^^^^^^^^^
tests/test_20_sentinel1.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
sarsen/sentinel1.py:216: in product_info
gcp = self.gcp
^^^^^^^^
sarsen/sentinel1.py:112: in gcp
ds, self.kwargs = open_dataset_autodetect(
sarsen/sentinel1.py:31: in open_dataset_autodetect
ds = xr.open_dataset(
/usr/lib/python3/dist-packages/xarray/backends/api.py:750: in open_dataset
backend_ds = backend.open_dataset(
/usr/lib/python3/dist-packages/xarray_sentinel/xarray_backends.py:22: in open_dataset
ds = sentinel1.open_sentinel1_dataset(
/usr/lib/python3/dist-packages/xarray_sentinel/sentinel1.py:991: in open_sentinel1_dataset
ds = METADATA_OPENERS[metadata](file, attrs=common_attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray_sentinel/sentinel1.py:271: in open_gcp_dataset
footprint = get_footprint_linestring(ds.azimuth_time, ds.slant_range_time, ds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray_sentinel/sentinel1.py:285: in get_footprint_linestring
azimuth_time_mm = [azimuth_time.min(), azimuth_time.max()]
^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray/core/_aggregations.py:2899: in min
return self.reduce(
/usr/lib/python3/dist-packages/xarray/core/dataarray.py:3909: in reduce
var = self.variable.reduce(func, dim, axis, keep_attrs, keepdims, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray/core/variable.py:1762: in reduce
result = super().reduce(
/usr/lib/python3/dist-packages/xarray/namedarray/core.py:919: in reduce
data = func(self.data, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray/core/duck_array_ops.py:532: in f
return func(values, axis=axis, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray/computation/nanops.py:71: in nanmin
return nputils.nanmin(a, axis=axis)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/xarray/core/nputils.py:242: in f
result = getattr(npmodule, name)(values, axis=axis, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = array([], dtype=float64), axis = None, out = None, keepdims = <no value>
initial = <no value>, where = <no value>
@array_function_dispatch(_nanmin_dispatcher)
def nanmin(a, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,
where=np._NoValue):
"""
Return minimum of an array or minimum along an axis, ignoring any NaNs.
When all-NaN slices are encountered a ``RuntimeWarning`` is raised and
Nan is returned for that slice.
Parameters
----------
a : array_like
Array containing numbers whose minimum is desired. If `a` is not an
array, a conversion is attempted.
axis : {int, tuple of int, None}, optional
Axis or axes along which the minimum is computed. The default is to compute
the minimum of the flattened array.
out : ndarray, optional
Alternate output array in which to place the result. The default
is ``None``; if provided, it must have the same shape as the
expected output, but the type will be cast if necessary. See
:ref:`ufuncs-output-type` for more details.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the original `a`.
If the value is anything but the default, then
`keepdims` will be passed through to the `min` method
of sub-classes of `ndarray`. If the sub-classes methods
does not implement `keepdims` any exceptions will be raised.
initial : scalar, optional
The maximum value of an output element. Must be present to allow
computation on empty slice. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.22.0
where : array_like of bool, optional
Elements to compare for the minimum. See `~numpy.ufunc.reduce`
for details.
.. versionadded:: 1.22.0
Returns
-------
nanmin : ndarray
An array with the same shape as `a`, with the specified axis
removed. If `a` is a 0-d array, or if axis is None, an ndarray
scalar is returned. The same dtype as `a` is returned.
See Also
--------
nanmax :
The maximum value of an array along a given axis, ignoring any NaNs.
amin :
The minimum value of an array along a given axis, propagating any NaNs.
fmin :
Element-wise minimum of two arrays, ignoring any NaNs.
minimum :
Element-wise minimum of two arrays, propagating any NaNs.
isnan :
Shows which elements are Not a Number (NaN).
isfinite:
Shows which elements are neither NaN nor infinity.
amax, fmax, maximum
Notes
-----
NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
(IEEE 754). This means that Not a Number is not equivalent to infinity.
Positive infinity is treated as a very large number and negative
infinity is treated as a very small (i.e. negative) number.
If the input has a integer type the function is equivalent to np.min.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, np.nan]])
>>> np.nanmin(a)
1.0
>>> np.nanmin(a, axis=0)
array([1., 2.])
>>> np.nanmin(a, axis=1)
array([1., 3.])
When positive infinity and negative infinity are present:
>>> np.nanmin([1, 2, np.nan, np.inf])
1.0
>>> np.nanmin([1, 2, np.nan, -np.inf])
-inf
"""
kwargs = {}
if keepdims is not np._NoValue:
kwargs['keepdims'] = keepdims
if initial is not np._NoValue:
kwargs['initial'] = initial
if where is not np._NoValue:
kwargs['where'] = where
if type(a) is np.ndarray and a.dtype != np.object_:
# Fast, but not safe for subclasses of ndarray, or object arrays,
# which do not implement isnan (gh-9009), or fmin correctly (gh-8975)
> res = np.fmin.reduce(a, axis=axis, out=out, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E ValueError: zero-size array to reduction operation fmin which has no identity
/usr/lib/python3/dist-packages/numpy/lib/_nanfunctions_impl.py:357: ValueError
=============================== warnings summary ===============================
../../../../../../usr/lib/python3/dist-packages/xarray_sentinel/esa_safe.py:7
/usr/lib/python3/dist-packages/xarray_sentinel/esa_safe.py:7: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
import pkg_resources
tests/test_10_scene.py::test_compute_dem_oriented_area
tests/test_30_radiometry.py::test_compute_gamma_area
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/sarsen/scene.py:115: PendingDeprecationWarning: The `dims` argument has been renamed to `dim`, and will be removed in the future. This renaming is taking place throughout xarray over the next few releases.
xr.dot(cross_1, dem_ecef, dims="axis")
tests/test_10_scene.py::test_compute_dem_oriented_area
tests/test_30_radiometry.py::test_compute_gamma_area
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/sarsen/scene.py:120: PendingDeprecationWarning: The `dims` argument has been renamed to `dim`, and will be removed in the future. This renaming is taking place throughout xarray over the next few releases.
xr.dot(cross_2, dem_ecef, dims="axis")
tests/test_20_geocoding.py::test_secant_method
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/sarsen/geocoding.py:44: RuntimeWarning: invalid value encountered in divide
t_prev, t_curr = t_curr, t_curr - np.where(q != 0, p / q, 0) # type: ignore
tests/test_20_geocoding.py::test_backward_geocode
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/sarsen/geocoding.py:78: PendingDeprecationWarning: The `dims` argument has been renamed to `dim`, and will be removed in the future. This renaming is taking place throughout xarray over the next few releases.
velocity_ecef / xr.dot(velocity_ecef, velocity_ecef, dims=dim) ** 0.5
tests/test_30_radiometry.py::test_compute_gamma_area
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/sarsen/radiometry.py:57: PendingDeprecationWarning: The `dims` argument has been renamed to `dim`, and will be removed in the future. This renaming is taking place throughout xarray over the next few releases.
gamma_area: xr.DataArray = xr.dot(dem_oriented_area, -dem_direction, dims="axis")
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_20_sentinel1.py::test_Sentinel1SarProduct[data_path0-IW/VV]
FAILED tests/test_20_sentinel1.py::test_Sentinel1SarProduct[data_path1-IW1/VV]
FAILED tests/test_20_sentinel1.py::test_product_info - ValueError: zero-size ...
============= 3 failed, 16 passed, 12 skipped, 8 warnings in 1.88s =============
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest tests
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13
make: *** [debian/rules:12: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
More information about the Pkg-grass-devel
mailing list