Your message dated Fri, 06 Mar 2026 09:05:42 +0000
with message-id <[email protected]>
and subject line Bug#1129895: fixed in python-cartopy 0.25.0+dfsg-2
has caused the Debian Bug report #1129895,
regarding python-cartopy: FTBFS: FAILED 
cartopy/tests/crs/test_geostationary.py::TestGeostationary::test_sweep
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1129895: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1129895
Debian Bug Tracking System
Contact [email protected] with problems
--- 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 ---
--- Begin Message ---
Source: python-cartopy
Source-Version: 0.25.0+dfsg-2
Done: Bas Couwenberg <[email protected]>

We believe that the bug you reported is fixed in the latest version of
python-cartopy, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Bas Couwenberg <[email protected]> (supplier of updated python-cartopy 
package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Fri, 06 Mar 2026 09:27:50 +0100
Source: python-cartopy
Architecture: source
Version: 0.25.0+dfsg-2
Distribution: unstable
Urgency: medium
Maintainer: Debian GIS Project <[email protected]>
Changed-By: Bas Couwenberg <[email protected]>
Closes: 1129895
Changes:
 python-cartopy (0.25.0+dfsg-2) unstable; urgency=medium
 .
   * Team upload.
   * Update lintian overrides.
   * Drop Rules-Requires-Root: no, default since dpkg 1.22.13.
   * Use test-build-validate-cleanup instead of test-build-twice.
   * Use debrebuild instead of reprotest.
   * Annotate build dependencies with nocheck.
   * Drop Priority: optional, default since dpkg 1.22.13.
   * Bump Standards-Version to 4.7.3, changes: priority.
   * Add patch to fix FTBFS with PROJ 9.8.0.
     (closes: #1129895)
Checksums-Sha1:
 130b9aa730b59af3024365bbf3fdbec27cfe1ccc 2607 python-cartopy_0.25.0+dfsg-2.dsc
 b4ab42381078a923f27a6c0d817b02280ef216ec 13632 
python-cartopy_0.25.0+dfsg-2.debian.tar.xz
 17cc0a94bc6883f4990b89e1d606933b55ed3ca7 15981 
python-cartopy_0.25.0+dfsg-2_amd64.buildinfo
Checksums-Sha256:
 fd81bf8b4f13b312d286c8548d3a3670dfdfc5f713e7ae46757561f64fb4d6f3 2607 
python-cartopy_0.25.0+dfsg-2.dsc
 46a2b9270553c21ce54032ecb34c5b634036efa46cd956d7059e18e5fcf90ec1 13632 
python-cartopy_0.25.0+dfsg-2.debian.tar.xz
 fd3184f44510e4914f820b56da5984a1e42631330e3df7a3ffce9acac97ec976 15981 
python-cartopy_0.25.0+dfsg-2_amd64.buildinfo
Files:
 84f3a984fa1a6630c2ec961fe5c61a3b 2607 python optional 
python-cartopy_0.25.0+dfsg-2.dsc
 aed72ca39d15bafc092d3e50d7a1aeb7 13632 python optional 
python-cartopy_0.25.0+dfsg-2.debian.tar.xz
 b23bd17d173ebeebb20075948637be1d 15981 python optional 
python-cartopy_0.25.0+dfsg-2_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEgYLeQXBWQI1hRlDRZ1DxCuiNSvEFAmmqkQIACgkQZ1DxCuiN
SvHcRw//TujDCyC9OwnJ9BiCG69+LmtoleQxNNsNZvysBEFoQXXYBYxMwy2J/Ifm
G9CtjTt5zfe/+HmxzOirfmS+OmIdXaGAqOeU9HtFB7oTUeE1gTc1DcqRhOmsDoTm
tuDwO/oYIBAGwiKaOwA5BGx3+QqZWUAtQ5CGlmZPzt3/9e0TGN59SEU0/FXm4zg3
SO0LE3P0ZxpfRkT3dCGCh7B3EmA80sLU5ewTJJqpg+eHm4W9BZN1uHbCkSxpfTwn
hlee6Vy1+5gmapb2ZQhmsc3ouDGrV8TTKKUPoSmWjTXT+ocSjNAQf1sBUmiaNmPo
1acSGMqXBXGZa2hLVKDPzJ1oKfKXfyOWHsHzdFPph0Zwl29HSqLbC2hDlJ0NR3Xa
en1IxCu5DuewO+ouzu9NGxxda5ihDkqEhWYRvByWfw9CZhN6XedvfTdub7YwTMy9
KZpWshgcMbJk5M48Y5IV2+zgYQJ9/FENMKi5w+5RwRuAt2iB2qvqTN7fj3g0gHxp
XPVHoUz3g4WQ6ryrsXRtE/A11dQIqFaOa5XFdIvz1bP4z8sXhJtrwQkgyusKZPsx
/MOZ3X+MlsVEXeZNHNui7w2N/FH4f/TSWLs3WGugNYw/Ch/tN+n0MvGeStIGZeo8
0/ojvs9c5Bhsv5HNPnxnpkQ/wJrNImZFrL4GTLMIoT/vtcsCDtI=
=h9Zc
-----END PGP SIGNATURE-----

Attachment: pgp3V1xZXNhy9.pgp
Description: PGP signature


--- End Message ---

Reply via email to