sci-libs/cartopy: Fix failing tests with >=sci-libs/proj-9.2

See https://github.com/SciTools/cartopy/issues/2145

Signed-off-by: Thomas Beierlein <tomjbe@gentoo.org>
This commit is contained in:
Thomas Beierlein
2023-07-21 07:37:41 +02:00
parent f674310898
commit f13ca1e556
3 changed files with 176 additions and 1 deletions

View File

@@ -57,7 +57,10 @@ BDEPEND="
)
"
PATCHES=( "${FILESDIR}"/${P}-fix-test.patch )
PATCHES=( "${FILESDIR}"/${P}-fix-test.patch
# backports to fix tests with >=PROJ9.2
"${FILESDIR}"/${PN}-0.21.1-fix-test_proj92.patch
"${FILESDIR}"/${PN}-0.21.1-fix-test_proj92_1.patch )
EPYTEST_IGNORE=(
# Require network access, not covered by markers

View File

@@ -0,0 +1,126 @@
diff --git a/lib/cartopy/tests/crs/test_equidistant_conic.py b/lib/cartopy/tests/crs/test_equidistant_conic.py
index 045c87e5d..9f50b4f04 100644
--- a/lib/cartopy/tests/crs/test_equidistant_conic.py
+++ b/lib/cartopy/tests/crs/test_equidistant_conic.py
@@ -10,6 +10,7 @@
import numpy as np
from numpy.testing import assert_almost_equal, assert_array_almost_equal
+import pyproj
import pytest
import cartopy.crs as ccrs
@@ -23,11 +24,16 @@ def test_default(self):
'y_0=0.0', 'lat_1=20.0', 'lat_2=50.0'}
check_proj_params('eqdc', eqdc, other_args)
+ expected_x = (-22784919.35600352, 22784919.35600352)
+ expected_y = (-10001965.729313632, 17558791.85156368)
+ if pyproj.__proj_version__ >= '9.2.0':
+ expected_x = (-22784919.3559981, 22784919.3559981)
+ expected_y = (-10001965.72931272, 17558791.85157471)
assert_almost_equal(np.array(eqdc.x_limits),
- (-22784919.35600352, 22784919.35600352),
+ expected_x,
decimal=7)
assert_almost_equal(np.array(eqdc.y_limits),
- (-10001965.729313632, 17558791.85156368),
+ expected_y,
decimal=7)
def test_eccentric_globe(self):
@@ -37,12 +43,16 @@ def test_eccentric_globe(self):
other_args = {'a=1000', 'b=500', 'lon_0=0.0', 'lat_0=0.0', 'x_0=0.0',
'y_0=0.0', 'lat_1=20.0', 'lat_2=50.0'}
check_proj_params('eqdc', eqdc, other_args)
-
+ expected_x = (-3016.869847713461, 3016.869847713461)
+ expected_y = (-1216.6029342241113, 2511.0574375797723)
+ if pyproj.__proj_version__ >= '9.2.0':
+ expected_x = (-2960.1009481, 2960.1009481)
+ expected_y = (-1211.05573766, 2606.04249537)
assert_almost_equal(np.array(eqdc.x_limits),
- (-3016.869847713461, 3016.869847713461),
+ expected_x,
decimal=7)
assert_almost_equal(np.array(eqdc.y_limits),
- (-1216.6029342241113, 2511.0574375797723),
+ expected_y,
decimal=7)
def test_eastings(self):
@@ -127,12 +137,16 @@ def test_ellipsoid_transform(self):
'lat_0=23.0', 'x_0=0.0', 'y_0=0.0', 'lat_1=29.5',
'lat_2=45.5'}
check_proj_params('eqdc', eqdc, other_args)
-
+ expected_x = (-22421870.719894886, 22421870.719894886)
+ expected_y = (-12546277.778958388, 17260638.403203618)
+ if pyproj.__proj_version__ >= '9.2.0':
+ expected_x = (-22421870.71988974, 22421870.71988976)
+ expected_y = (-12546277.77895742, 17260638.403216)
assert_almost_equal(np.array(eqdc.x_limits),
- (-22421870.719894886, 22421870.719894886),
+ expected_x,
decimal=7)
assert_almost_equal(np.array(eqdc.y_limits),
- (-12546277.778958388, 17260638.403203618),
+ expected_y,
decimal=7)
result = eqdc.transform_point(-75.0, 35.0, geodetic)
diff --git a/lib/cartopy/tests/crs/test_sinusoidal.py b/lib/cartopy/tests/crs/test_sinusoidal.py
index 2f2a1821a..9347260a1 100644
--- a/lib/cartopy/tests/crs/test_sinusoidal.py
+++ b/lib/cartopy/tests/crs/test_sinusoidal.py
@@ -6,6 +6,7 @@
import numpy as np
from numpy.testing import assert_almost_equal
+import pyproj
import pytest
import cartopy.crs as ccrs
@@ -32,10 +33,15 @@ def test_eccentric_globe(self):
other_args = {'a=1000', 'b=500', 'lon_0=0.0', 'x_0=0.0', 'y_0=0.0'}
check_proj_params('sinu', crs, other_args)
+ expected_x = [-3141.59, 3141.59]
+ expected_y = [-1216.60, 1216.60]
+ if pyproj.__proj_version__ >= '9.2.0':
+ expected_x = [-3141.60, 3141.60]
+ expected_y = [-1211.05, 1211.05]
assert_almost_equal(np.array(crs.x_limits),
- [-3141.59, 3141.59], decimal=2)
+ expected_x, decimal=2)
assert_almost_equal(np.array(crs.y_limits),
- [-1216.60, 1216.60], decimal=2)
+ expected_y, decimal=2)
def test_offset(self):
crs = ccrs.Sinusoidal()
diff --git a/lib/cartopy/tests/test_crs.py b/lib/cartopy/tests/test_crs.py
index c1a5d11da..b6c38ced3 100644
--- a/lib/cartopy/tests/test_crs.py
+++ b/lib/cartopy/tests/test_crs.py
@@ -90,9 +90,17 @@ def test_osgb(self, approx):
def test_epsg(self):
uk = ccrs.epsg(27700)
assert uk.epsg_code == 27700
- assert_almost_equal(uk.x_limits, (-104009.357, 688806.007), decimal=3)
- assert_almost_equal(uk.y_limits, (-8908.37, 1256558.45), decimal=2)
- assert_almost_equal(uk.threshold, 7928.15, decimal=2)
+ expected_x = (-104009.357, 688806.007)
+ expected_y = (-8908.37, 1256558.45)
+ expected_threshold = 7928.15
+ if pyproj.__proj_version__ >= '9.2.0':
+ expected_x = (-104728.764, 688806.007)
+ expected_y = (-8908.36, 1256616.32)
+ expected_threshold = 7935.34
+ assert_almost_equal(uk.x_limits,
+ expected_x, decimal=3)
+ assert_almost_equal(uk.y_limits, expected_y, decimal=2)
+ assert_almost_equal(uk.threshold, expected_threshold, decimal=2)
self._check_osgb(uk)
def test_epsg_compound_crs(self):

View File

@@ -0,0 +1,46 @@
diff --git a/lib/cartopy/tests/crs/test_lambert_conformal.py b/lib/cartopy/tests/crs/test_lambert_conformal.py
index 6032d2e5c..c64022ff9 100644
--- a/lib/cartopy/tests/crs/test_lambert_conformal.py
+++ b/lib/cartopy/tests/crs/test_lambert_conformal.py
@@ -5,6 +5,7 @@
# licensing details.
from numpy.testing import assert_array_almost_equal
+import pyproj
import pytest
import cartopy.crs as ccrs
@@ -68,18 +69,29 @@ def test_too_many_parallel(self):
def test_single_spole(self):
s_pole_crs = ccrs.LambertConformal(standard_parallels=[-1.])
+ expected_x = (-19939660, 19939660)
+ expected_y = (-735590302, -8183795)
+ if pyproj.__proj_version__ >= '9.2.0':
+ expected_x = (-19840440, 19840440)
+ expected_y = (-370239953, -8191953)
+ print(s_pole_crs.x_limits)
assert_array_almost_equal(s_pole_crs.x_limits,
- (-19939660, 19939660),
+ expected_x,
decimal=0)
assert_array_almost_equal(s_pole_crs.y_limits,
- (-735590302, -8183795),
+ expected_y,
decimal=0)
def test_single_npole(self):
n_pole_crs = ccrs.LambertConformal(standard_parallels=[1.])
+ expected_x = (-20130569, 20130569)
+ expected_y = (-8170229, 726200683)
+ if pyproj.__proj_version__ >= '9.2.0':
+ expected_x = (-20222156, 20222156)
+ expected_y = (-8164817, 360848719)
assert_array_almost_equal(n_pole_crs.x_limits,
- (-20130569, 20130569),
+ expected_x,
decimal=0)
assert_array_almost_equal(n_pole_crs.y_limits,
- (-8170229, 726200683),
+ expected_y,
decimal=0)