--- Begin Message ---
Package: src:python-cartopy
Version: 0.25.0+dfsg-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/202603/
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-cartopy, 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:384: python3.14 -m build --skip-dependency-check --no-isolation
--wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_cartopy
* Building wheel...
Compiling lib/cartopy/trace.pyx because it changed.
[... snipped ...]
self = <cartopy.tests.test_crs_transform_vectors.TestTransformVectors object at
0x7fe331c5f130>
def test_invalid_xy_domain_corner(self):
# If the point we need to calculate the vector angle falls outside the
# source projection x and y-domain it should be handled correctly.
rlon = np.array([180.])
rlat = np.array([90.])
u = np.array([1.])
v = np.array([1.])
src_proj = ccrs.PlateCarree()
target_proj = ccrs.Stereographic(central_latitude=90,
central_longitude=0)
ut, vt = target_proj.transform_vectors(src_proj, rlon, rlat, u, v)
> assert_array_almost_equal(ut, np.array([0.]), decimal=2)
E AssertionError:
E Arrays are not almost equal to 2 decimals
E
E nan location mismatch:
E ACTUAL: array([nan])
E DESIRED: array([0.])
cartopy/tests/test_crs_transform_vectors.py:122: AssertionError
________ TestMisc.test_infinite_loop_bounds[InterruptedGoodeHomolosine] ________
self = <cartopy.tests.test_polygon.TestMisc object at 0x7fe331a29130>
proj = <class 'cartopy.crs.InterruptedGoodeHomolosine'>
@pytest.mark.parametrize('proj',
[ccrs.InterruptedGoodeHomolosine, ccrs.Mollweide])
def test_infinite_loop_bounds(self, proj):
# test a polygon which used to get stuck in an infinite loop but is now
# erroneously clipped.
# see https://github.com/SciTools/cartopy/issues/1131
# These names are for IGH; effectively the same for Mollweide.
bottom = [0., 70.]
right = [0., 90.]
top = [-180., 90.]
left = [-180., 70.]
verts = np.array([
bottom,
right,
top,
left,
bottom,
])
bad_path = sgeom.Polygon(verts)
target = proj()
source = ccrs.PlateCarree()
projected = target.project_geometry(bad_path, source)
# When transforming segments was broken, the resulting path did not
# close, and either filled most of the domain, or a smaller portion
# than it should. Check that the bounds match the individual points at
# the expected edges.
projected_left = target.transform_point(left[0], left[1], source)
assert projected.bounds[0] == pytest.approx(projected_left[0],
rel=target.threshold)
projected_bottom = target.transform_point(bottom[0], bottom[1], source)
assert projected.bounds[1] == pytest.approx(projected_bottom[1],
rel=target.threshold)
projected_right = target.transform_point(right[0], right[1], source)
> assert projected.bounds[2] == pytest.approx(projected_right[0],
rel=target.threshold,
abs=1e-8)
E assert 3148724.315906706 == nan ± ???
E
E comparison failed
E Obtained: 3148724.315906706
E Expected: nan ± ???
cartopy/tests/test_polygon.py:162: AssertionError
________________ TestMisc.test_infinite_loop_bounds[Mollweide] _________________
self = <cartopy.tests.test_polygon.TestMisc object at 0x7fe3319fc8d0>
proj = <class 'cartopy.crs.Mollweide'>
@pytest.mark.parametrize('proj',
[ccrs.InterruptedGoodeHomolosine, ccrs.Mollweide])
def test_infinite_loop_bounds(self, proj):
# test a polygon which used to get stuck in an infinite loop but is now
# erroneously clipped.
# see https://github.com/SciTools/cartopy/issues/1131
# These names are for IGH; effectively the same for Mollweide.
bottom = [0., 70.]
right = [0., 90.]
top = [-180., 90.]
left = [-180., 70.]
verts = np.array([
bottom,
right,
top,
left,
bottom,
])
bad_path = sgeom.Polygon(verts)
target = proj()
source = ccrs.PlateCarree()
projected = target.project_geometry(bad_path, source)
# When transforming segments was broken, the resulting path did not
# close, and either filled most of the domain, or a smaller portion
# than it should. Check that the bounds match the individual points at
# the expected edges.
projected_left = target.transform_point(left[0], left[1], source)
assert projected.bounds[0] == pytest.approx(projected_left[0],
rel=target.threshold)
projected_bottom = target.transform_point(bottom[0], bottom[1], source)
assert projected.bounds[1] == pytest.approx(projected_bottom[1],
rel=target.threshold)
projected_right = target.transform_point(right[0], right[1], source)
> assert projected.bounds[2] == pytest.approx(projected_right[0],
rel=target.threshold,
abs=1e-8)
E assert 0.0 == nan ± ???
E
E comparison failed
E Obtained: 0.0
E Expected: nan ± ???
cartopy/tests/test_polygon.py:162: AssertionError
_______________ TestMisc.test_tiny_point_between_boundary_points _______________
self = <cartopy.tests.test_polygon.TestMisc object at 0x7fe331c9f200>
def test_tiny_point_between_boundary_points(self):
# Geometry comes from #259.
target = ccrs.Orthographic(0, -75)
source = ccrs.PlateCarree()
wkt = 'POLYGON ((132 -40, 133 -6, 125.3 1, 115 -6, 132 -40))'
geom = shapely.wkt.loads(wkt)
target = ccrs.Orthographic(central_latitude=90., central_longitude=0)
source = ccrs.PlateCarree()
projected = target.project_geometry(geom, source)
area = projected.area
# Before fixing, this geometry used to fill the whole disk. Approx
# 1.2e14.
> assert 81330 < area < 81340, \
f'Got area {area}, expecting ~81336'
E AssertionError: Got area 85832.84574015415, expecting ~81336
E assert 85832.84574015415 < 81340
cartopy/tests/test_polygon.py:225: AssertionError
________________ Test_vector_scalar_to_grid.test_with_transform ________________
self = <cartopy.tests.test_vector_transform.Test_vector_scalar_to_grid object
at 0x7fe32f51b390>
def test_with_transform(self):
# Transform and regrid vector.
target_crs = ccrs.PlateCarree()
src_crs = ccrs.NorthPolarStereo()
input_coords = [src_crs.transform_point(xp, yp, target_crs)
for xp, yp in zip(self.x, self.y)]
x_nps = np.array([ic[0] for ic in input_coords])
y_nps = np.array([ic[1] for ic in input_coords])
u_nps, v_nps = src_crs.transform_vectors(target_crs, self.x, self.y,
self.u, self.v)
expected_x_grid = np.array([[-10., -5., 0., 5., 10.],
[-10., -5., 0., 5., 10.],
[-10., -5., 0., 5., 10.]])
expected_y_grid = np.array([[5., 5., 5., 5., 5.],
[7.5, 7.5, 7.5, 7.5, 7.5],
[10., 10., 10., 10., 10]])
expected_u_grid = np.array([[np.nan, np.nan, np.nan, np.nan, np.nan],
[np.nan, 2.3838, 3.5025, 2.6152, np.nan],
[2, 3.0043, 4, 2.9022, 2]])
expected_v_grid = np.array([[np.nan, np.nan, np.nan, np.nan, np.nan],
[np.nan, 2.6527, 2.1904, 2.4192, np.nan],
[5.5, 4.6483, 4, 4.47, 5.5]])
x_grid, y_grid, u_grid, v_grid = vec_trans.vector_scalar_to_grid(
src_crs, target_crs, (5, 3), x_nps, y_nps, u_nps, v_nps)
assert_array_almost_equal(x_grid, expected_x_grid)
assert_array_almost_equal(y_grid, expected_y_grid)
# Vector transforms are somewhat approximate, so we are more lenient
# with the returned values since we have transformed twice.
> assert_array_almost_equal(u_grid, expected_u_grid, decimal=4)
E AssertionError:
E Arrays are not almost equal to 4 decimals
E
E Mismatched elements: 5 / 15 (33.3%)
E Max absolute difference among violations: 0.0019536
E Max relative difference among violations: 0.00067314
E ACTUAL: array([[ nan, nan, nan, nan, nan],
E [ nan, 2.3843, 3.5023, 2.6158, nan],
E [2. , 3.0062, 4. , 2.9042, 2. ]])
E DESIRED: array([[ nan, nan, nan, nan, nan],
E [ nan, 2.3838, 3.5025, 2.6152, nan],
E [2. , 3.0043, 4. , 2.9022, 2. ]])
cartopy/tests/test_vector_transform.py:167: AssertionError
=============================== warnings summary ===============================
cartopy/tests/mpl/test_gridliner.py:14
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_cartopy/build/cartopy/tests/mpl/test_gridliner.py:14:
DeprecationWarning: The 'shapely.geos' module is deprecated, and will be
removed in a future version. All attributes of 'shapely.geos' are available
directly from the top-level 'shapely' namespace (since shapely 2.0.0).
from shapely.geos import geos_version
cartopy/tests/mpl/test_mpl_integration.py::test_pcolormesh_wrap_gouraud_shading_failing_mask_creation
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_cartopy/build/cartopy/mpl/geoaxes.py:1890:
UserWarning: Handling wrapped coordinates with gouraud shading is likely to
introduce artifacts. It is recommended to remove the wrap manually before
calling pcolormesh.
warnings.warn("Handling wrapped coordinates with gouraud "
cartopy/tests/mpl/test_plots.py::test_triplot_bbox_tight
cartopy/tests/test_line_string.py::TestBisect::test_nan_rectangular
/usr/lib/python3/dist-packages/shapely/creation.py:218: RuntimeWarning:
invalid value encountered in linestrings
return lib.linestrings(coords, np.intc(handle_nan), out=out, **kwargs)
cartopy/tests/test_crs.py::TestCRS::test_osgb[True]
cartopy/tests/test_crs.py::TestCRS::test_osgb[False]
cartopy/tests/test_crs.py::TestCRS::test_epsg
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_cartopy/build/cartopy/tests/test_crs.py:61:
UserWarning: uk_os_OSTN15_NTv2_OSGBtoETRS.tif is unavailable; testing OSGB at
reduced precision
warnings.warn(f'{grid_name} is unavailable; '
cartopy/tests/test_geodesic.py::test_geometry_length_multilinestring
cartopy/tests/test_geodesic.py::test_geometry_length_multilinestring
cartopy/tests/test_geodesic.py::test_geometry_length_multilinestring
cartopy/tests/test_geodesic.py::test_geometry_length_multilinestring
cartopy/tests/test_geodesic.py::test_geometry_length_multilinestring
cartopy/tests/test_geodesic.py::test_geometry_length_multilinestring
cartopy/tests/test_geodesic.py::test_geometry_length_multilinestring
cartopy/tests/test_geodesic.py::test_geometry_length_multilinestring
/usr/lib/python3/dist-packages/pyproj/geod.py:398: DeprecationWarning:
Conversion of an array with ndim > 0 to a scalar is deprecated, and will error
in future. Ensure you extract a single element from your array before
performing this operation. (Deprecated NumPy 1.25.)
return self._inv_point(
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED cartopy/tests/crs/test_geostationary.py::TestGeostationary::test_sweep
FAILED
cartopy/tests/crs/test_lambert_conformal.py::TestLambertZoneII::test_default
FAILED
cartopy/tests/crs/test_oblique_mercator.py::TestCrsArgs::test_transform_point[default]
FAILED
cartopy/tests/crs/test_oblique_mercator.py::TestCrsArgs::test_transform_point[azimuth]
FAILED
cartopy/tests/crs/test_oblique_mercator.py::TestCrsArgs::test_transform_point[central_longitude]
FAILED
cartopy/tests/crs/test_oblique_mercator.py::TestCrsArgs::test_transform_point[central_latitude]
FAILED
cartopy/tests/crs/test_oblique_mercator.py::TestCrsArgs::test_transform_point[false_easting_northing]
FAILED
cartopy/tests/crs/test_oblique_mercator.py::TestCrsArgs::test_transform_point[scale_factor]
FAILED
cartopy/tests/crs/test_oblique_mercator.py::TestCrsArgs::test_transform_point[globe]
FAILED
cartopy/tests/crs/test_oblique_mercator.py::TestCrsArgs::test_transform_point[combo]
FAILED
cartopy/tests/crs/test_transverse_mercator.py::TestTransverseMercator::test_default[True]
FAILED
cartopy/tests/crs/test_transverse_mercator.py::TestTransverseMercator::test_default[False]
FAILED
cartopy/tests/crs/test_transverse_mercator.py::TestTransverseMercator::test_osgb_vals[True]
FAILED
cartopy/tests/crs/test_transverse_mercator.py::TestTransverseMercator::test_osgb_vals[False]
FAILED
cartopy/tests/crs/test_transverse_mercator.py::TestOSGB::test_default[True]
FAILED
cartopy/tests/crs/test_transverse_mercator.py::TestOSGB::test_default[False]
FAILED
cartopy/tests/crs/test_transverse_mercator.py::TestOSNI::test_default[True]
FAILED
cartopy/tests/crs/test_transverse_mercator.py::TestOSNI::test_default[False]
FAILED cartopy/tests/mpl/test_axes.py::test_geoaxes_no_subslice - Failed: Err...
FAILED cartopy/tests/mpl/test_axes.py::test_geoaxes_set_boundary_clipping - F...
FAILED
cartopy/tests/mpl/test_contour.py::test_plot_after_contour_doesnt_shrink[contour]
FAILED cartopy/tests/mpl/test_gridliner.py::test_gridliner_labels_zoom - Asse...
FAILED cartopy/tests/mpl/test_images.py::test_imshow - Failed: Error: Image f...
FAILED cartopy/tests/mpl/test_images.py::test_stock_img - Failed: Error: Imag...
FAILED cartopy/tests/mpl/test_images.py::test_pil_Image - Failed: Error: Imag...
FAILED cartopy/tests/mpl/test_images.py::test_background_img - Failed: Error:...
FAILED cartopy/tests/mpl/test_mpl_integration.py::test_cursor_values - Assert...
FAILED cartopy/tests/mpl/test_pseudo_color.py::test_pcolormesh_datalim - Asse...
FAILED cartopy/tests/mpl/test_set_extent.py::test_extents - AssertionError:
FAILED cartopy/tests/mpl/test_set_extent.py::test_get_extent - AssertionError:
FAILED cartopy/tests/mpl/test_ticker.py::test_LatitudeFormatter_mercator - As...
FAILED
cartopy/tests/test_crs_transform_vectors.py::TestTransformVectors::test_invalid_y_domain
FAILED
cartopy/tests/test_crs_transform_vectors.py::TestTransformVectors::test_invalid_xy_domain_corner
FAILED
cartopy/tests/test_polygon.py::TestMisc::test_infinite_loop_bounds[InterruptedGoodeHomolosine]
FAILED
cartopy/tests/test_polygon.py::TestMisc::test_infinite_loop_bounds[Mollweide]
FAILED
cartopy/tests/test_polygon.py::TestMisc::test_tiny_point_between_boundary_points
FAILED
cartopy/tests/test_vector_transform.py::Test_vector_scalar_to_grid::test_with_transform
= 37 failed, 630 passed, 2 skipped, 218 deselected, 5 xfailed, 15 warnings in
8.98s =
E: pybuild pybuild:483: test: plugin pyproject failed with: exit code=1: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_cartopy/build; python3.13 -m pytest
--pyargs -v -m "not network and not natural_earth" cartopy
dh_auto_test: error: pybuild --test -i python{version} -p "3.14 3.13" returned
exit code 13
make[1]: *** [debian/rules:33: override_dh_auto_test] Error 25
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:26: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit
status 2
--------------------------------------------------------------------------------
--- End Message ---