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 --------------------------------------------------------------------------------

