From 7a75c19da34ee453718283415ae3cee05c5ad87d Mon Sep 17 00:00:00 2001 From: R Virinchi Date: Sat, 24 Jan 2026 00:49:12 +0530 Subject: [PATCH 1/8] replaced assert_array_almost_equal with assert_allclose wherever necesary --- tests/test_xarray.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/tests/test_xarray.py b/tests/test_xarray.py index e9fbb3cfdf..0eddea0131 100644 --- a/tests/test_xarray.py +++ b/tests/test_xarray.py @@ -12,7 +12,7 @@ from metpy.plots.mapping import CFProjection from metpy.testing import (assert_almost_equal, assert_array_almost_equal, assert_array_equal, - get_test_data) + get_test_data, assert_allclose) from metpy.units import DimensionalityError, is_quantity, units from metpy.xarray import (add_vertical_dim_from_xarray, check_axis, check_matching_coordinates, grid_deltas_from_dataarray, preprocess_and_wrap) @@ -1417,8 +1417,8 @@ def test_grid_deltas_from_dataarray_lonlat(test_da_lonlat): [369802.28173967, 369802.28173967, 369802.28173967, 369802.28173967], [370009.56291098, 370009.56291098, 370009.56291098, 370009.56291098]]]) * units.m - assert_array_almost_equal(dx, true_dx, 5) - assert_array_almost_equal(dy, true_dy, 5) + assert_allclose(dx, true_dx, rtol=1e-6) + assert_allclose(dy, true_dy, rtol=1e-6) def test_grid_deltas_from_dataarray_xy(test_da_xy): @@ -1453,8 +1453,8 @@ def test_grid_deltas_from_dataarray_actual_xy(test_da_xy, ccrs): true_dy = [[[[496587.363, 496410.523, 495857.430, 494863.795], [499498.308, 499429.714, 499191.065, 498689.047], [499474.250, 499549.538, 499727.711, 499874.122]]]] * units.m - assert_array_almost_equal(dx, true_dx, 2) - assert_array_almost_equal(dy, true_dy, 2) + assert_allclose(dx, true_dx, rtol=1e-6) + assert_allclose(dy, true_dy, rtol=1e-6) def test_grid_deltas_from_dataarray_nominal_lonlat(test_da_lonlat): @@ -1462,9 +1462,8 @@ def test_grid_deltas_from_dataarray_nominal_lonlat(test_da_lonlat): dx, dy = grid_deltas_from_dataarray(test_da_lonlat, kind='nominal') true_dx = [[[3.333333] * 3]] * units.degrees true_dy = [[[3.333333]] * 3] * units.degrees - assert_array_almost_equal(dx, true_dx, 5) - assert_array_almost_equal(dy, true_dy, 5) - + assert_allclose(dx, true_dx, rtol=1e-7, atol=1e-5) + assert_allclose(dy, true_dy, rtol=1e-7, atol=1e-5) def test_grid_deltas_from_dataarray_lonlat_assumed_order(): """Test grid_deltas_from_dataarray when dim order must be assumed.""" @@ -1491,8 +1490,8 @@ def test_grid_deltas_from_dataarray_lonlat_assumed_order(): [222031.0111961, 222107.8492205]] * units.m true_dy = [[175661.5413976, 170784.1311091, 165697.7563223], [175661.5413976, 170784.1311091, 165697.7563223]] * units.m - assert_array_almost_equal(dx, true_dx, 5) - assert_array_almost_equal(dy, true_dy, 5) + assert_allclose(dx, true_dx, rtol=1e-6) + assert_allclose(dy, true_dy, rtol=1e-6) def test_grid_deltas_from_dataarray_invalid_kind(test_da_xy): From 7e35a62467c42dfd0240fc6605a5a017048595d8 Mon Sep 17 00:00:00 2001 From: R Virinchi Date: Sat, 24 Jan 2026 01:19:40 +0530 Subject: [PATCH 2/8] added rtol=1e-6 explicitly --- tests/calc/test_basic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/calc/test_basic.py b/tests/calc/test_basic.py index dc8770ef4d..d87ed94840 100644 --- a/tests/calc/test_basic.py +++ b/tests/calc/test_basic.py @@ -718,7 +718,7 @@ def test_smooth_window_1d_dataarray(): dims=('time',), coords={'time': pd.date_range('2020-01-01', periods=10, freq='h')} ) - xr.testing.assert_allclose(smoothed, truth) + xr.testing.assert_allclose(smoothed, truth, rtol=1e-6) def test_smooth_rectangular(array_type): @@ -840,4 +840,4 @@ def test_zoom_xarray(): 'metpy_crs': hght.metpy_crs}, attrs=hght.attrs ) - xr.testing.assert_allclose(zoomed, truth) + xr.testing.assert_allclose(zoomed, truth, rtol=1e-6) From c52eecd509085fa47afd6460e9c178e48a3390bc Mon Sep 17 00:00:00 2001 From: R Virinchi Date: Sat, 24 Jan 2026 02:08:33 +0530 Subject: [PATCH 3/8] replaced assert_array_almost_equal with assert_allclose wherever necessary --- tests/interpolate/test_grid.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/interpolate/test_grid.py b/tests/interpolate/test_grid.py index 573aad2589..aa41a9954b 100644 --- a/tests/interpolate/test_grid.py +++ b/tests/interpolate/test_grid.py @@ -240,7 +240,7 @@ def test_interpolate_to_isosurface(): [336.7088576, 336.4165698, 335.6255217, 334.0758288, 331.9684081], [335.6583567, 336.3500714, 336.6844744, 336.3286052, 335.3874244]]) - assert_array_almost_equal(truth, dt_theta) + np.testing.assert_allclose(truth, dt_theta, rtol=1e-6, atol=1e-6) @pytest.mark.parametrize('assume_units', [None, 'mbar']) @@ -282,7 +282,7 @@ def test_interpolate_to_grid(method, assume_units, test_coords, boundary_coords) assert np.all(np.diff(xg, axis=-1) <= hres) assert np.all(np.diff(yg, axis=0) <= hres) - assert_array_almost_equal(truth, img) + np.testing.assert_allclose(truth, img, rtol=1e-6, atol=1e-6) def test_interpolate_to_isosurface_from_below(): @@ -328,3 +328,4 @@ def test_interpolate_to_isosurface_from_below(): [356., 371., 390., 410., 430.]]) assert_array_almost_equal(truth, dt_theta) + np.testing.assert_allclose(truth, dt_theta, rtol=1e-6, atol=1e-6) From 9c8fce96de0820f413dc2e2ba00fda6b4154c203 Mon Sep 17 00:00:00 2001 From: R Virinchi Date: Sat, 24 Jan 2026 02:43:34 +0530 Subject: [PATCH 4/8] replaced assert_array_almost_equal with assert_allclose wherever necessary --- tests/interpolate/test_grid.py | 1 - tests/interpolate/test_interpolate_tools.py | 2 +- tests/interpolate/test_one_dimension.py | 51 +++++++++------------ 3 files changed, 22 insertions(+), 32 deletions(-) diff --git a/tests/interpolate/test_grid.py b/tests/interpolate/test_grid.py index aa41a9954b..1c7459df5a 100644 --- a/tests/interpolate/test_grid.py +++ b/tests/interpolate/test_grid.py @@ -327,5 +327,4 @@ def test_interpolate_to_isosurface_from_below(): [352., 367., 382., 400., 420.], [356., 371., 390., 410., 430.]]) - assert_array_almost_equal(truth, dt_theta) np.testing.assert_allclose(truth, dt_theta, rtol=1e-6, atol=1e-6) diff --git a/tests/interpolate/test_interpolate_tools.py b/tests/interpolate/test_interpolate_tools.py index 56a747c827..cc2d461019 100644 --- a/tests/interpolate/test_interpolate_tools.py +++ b/tests/interpolate/test_interpolate_tools.py @@ -115,7 +115,7 @@ def test_cressman_weights(): 0.470588235294117, 0.219512195121951] - assert_array_almost_equal(truth, weights) + np.testing.assert_allclose(truth, weights, rtol=1e-6) def test_interpolate_to_grid_pandas(): diff --git a/tests/interpolate/test_one_dimension.py b/tests/interpolate/test_one_dimension.py index 4c473bb4c5..b199727c47 100644 --- a/tests/interpolate/test_one_dimension.py +++ b/tests/interpolate/test_one_dimension.py @@ -47,7 +47,7 @@ def test_log_interpolate_1d(): x_interp = np.array([5e3, 5e4, 5e5]) y_interp_truth = np.array([20.0343863828, 24.6395565688, 29.2447267548]) y_interp = log_interpolate_1d(x_interp, x_log, y_log) - assert_array_almost_equal(y_interp, y_interp_truth, 7) + np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) def test_log_interpolate_1d_mixed(): @@ -57,7 +57,7 @@ def test_log_interpolate_1d_mixed(): x_interp = np.array([5e3, 5e4, 5e5]) y_interp_truth = np.array([20.0343863828, 24.6395565688, 29.2447267548]) y_interp = log_interpolate_1d(x_interp, x_log, y_log) - assert_array_almost_equal(y_interp, y_interp_truth, 7) + np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) def test_log_interpolate_1d_units(): @@ -67,8 +67,7 @@ def test_log_interpolate_1d_units(): x_interp = np.array([5e5, 5e6, 5e7]) * units.Pa y_interp_truth = np.array([20.0343863828, 24.6395565688, 29.2447267548]) * units.degC y_interp = log_interpolate_1d(x_interp, x_log, y_log) - assert_array_almost_equal(y_interp, y_interp_truth, 7) - + np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) def test_log_interpolate_2d(): """Test interpolating with log x-scale in 2 dimensions.""" @@ -77,8 +76,7 @@ def test_log_interpolate_2d(): x_interp = np.array([5e3, 5e4, 5e5]) y_interp_truth = np.array([20.0343863828, 24.6395565688, 29.2447267548]) y_interp = log_interpolate_1d(x_interp, x_log, y_log, axis=1) - assert_array_almost_equal(y_interp[1], y_interp_truth, 7) - + np.testing.assert_allclose(y_interp[1], y_interp_truth, rtol=1e-7) def test_log_interpolate_3d(): """Test interpolating with log x-scale 3 dimensions along second axis.""" @@ -87,8 +85,7 @@ def test_log_interpolate_3d(): x_interp = np.array([5e3, 5e4, 5e5]) y_interp_truth = np.array([20.0343863828, 24.6395565688, 29.2447267548]) y_interp = log_interpolate_1d(x_interp, x_log, y_log, axis=1) - assert_array_almost_equal(y_interp[0, :, 0], y_interp_truth, 7) - + np.testing.assert_allclose(y_interp[0, :, 0], y_interp_truth, rtol=1e-7) def test_log_interpolate_4d(): """Test interpolating with log x-scale 4 dimensions.""" @@ -97,8 +94,7 @@ def test_log_interpolate_4d(): x_interp = np.array([5e3, 5e4, 5e5]) y_interp_truth = np.array([20.0343863828, 24.6395565688, 29.2447267548]) y_interp = log_interpolate_1d(x_interp, x_log, y_log, axis=3) - assert_array_almost_equal(y_interp[0, 0, 0, :], y_interp_truth, 7) - + np.testing.assert_allclose(y_interp[0, 0, 0, :], y_interp_truth, rtol=1e-7) def test_log_interpolate_2args(): """Test interpolating with log x-scale with 2 arguments.""" @@ -108,9 +104,8 @@ def test_log_interpolate_2args(): x_interp = np.array([5e3, 5e4, 5e5]) y_interp_truth = np.array([20.0343863828, 24.6395565688, 29.2447267548]) y_interp = log_interpolate_1d(x_interp, x_log, y_log, y_log2) - assert_array_almost_equal(y_interp[1], y_interp_truth, 7) - assert_array_almost_equal(y_interp[0], y_interp_truth, 7) - + np.testing.assert_allclose(y_interp[1], y_interp_truth, rtol=1e-7) + np.testing.assert_allclose(y_interp[0], y_interp_truth, rtol=1e-7) def test_log_interpolate_set_nan_above(): """Test interpolating with log x-scale setting out of bounds above data to nan.""" @@ -120,8 +115,7 @@ def test_log_interpolate_set_nan_above(): y_interp_truth = np.nan with pytest.warns(Warning): y_interp = log_interpolate_1d(x_interp, x_log, y_log) - assert_array_almost_equal(y_interp, y_interp_truth, 7) - + np.testing.assert_allclose(y_interp, y_interp_truth, equal_nan=True) def test_log_interpolate_no_extrap(): """Test interpolating with log x-scale setting out of bounds value error.""" @@ -140,8 +134,7 @@ def test_log_interpolate_set_nan_below(): y_interp_truth = np.nan with pytest.warns(Warning): y_interp = log_interpolate_1d(x_interp, x_log, y_log) - assert_array_almost_equal(y_interp, y_interp_truth, 7) - + np.testing.assert_allclose(y_interp, y_interp_truth, equal_nan=True) def test_interpolate_2args(): """Test interpolation with 2 arguments.""" @@ -151,9 +144,8 @@ def test_interpolate_2args(): x_interp = np.array([2.5000000, 3.5000000]) y_interp_truth = np.array([2.5000000, 3.5000000]) y_interp = interpolate_1d(x_interp, x, y, y2) - assert_array_almost_equal(y_interp[0], y_interp_truth, 7) - assert_array_almost_equal(y_interp[1], y_interp_truth, 7) - + np.testing.assert_allclose(y_interp[0], y_interp_truth, rtol=1e-7) + np.testing.assert_allclose(y_interp[1], y_interp_truth, rtol=1e-7) def test_interpolate_decrease(): """Test interpolation with decreasing interpolation points.""" @@ -162,8 +154,7 @@ def test_interpolate_decrease(): x_interp = np.array([3.5000000, 2.5000000]) y_interp_truth = np.array([3.5000000, 2.5000000]) y_interp = interpolate_1d(x_interp, x, y) - assert_array_almost_equal(y_interp, y_interp_truth, 7) - + np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) def test_interpolate_decrease_xp(): """Test interpolation with decreasing order.""" @@ -172,8 +163,7 @@ def test_interpolate_decrease_xp(): x_interp = np.array([3.5000000, 2.5000000]) y_interp_truth = np.array([3.5000000, 2.5000000]) y_interp = interpolate_1d(x_interp, x, y) - assert_array_almost_equal(y_interp, y_interp_truth, 7) - + np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) def test_interpolate_end_point(): """Test interpolation with point at data endpoints.""" @@ -182,8 +172,7 @@ def test_interpolate_end_point(): x_interp = np.array([1.0, 4.0]) y_interp_truth = np.array([1.0, 4.0]) y_interp = interpolate_1d(x_interp, x, y) - assert_array_almost_equal(y_interp, y_interp_truth, 7) - + np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) def test_interpolate_masked_units(): """Test interpolating with masked arrays with units.""" @@ -192,8 +181,7 @@ def test_interpolate_masked_units(): x_interp = np.array([250., 350.]) * units.cm y_interp_truth = np.array([65., 75.]) * units.degC y_interp = interpolate_1d(x_interp, x, y) - assert_array_almost_equal(y_interp, y_interp_truth, 7) - + np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) def test_interpolate_broadcast(): """Test interpolate_1d with input levels needing broadcasting.""" @@ -201,5 +189,8 @@ def test_interpolate_broadcast(): t = units.Quantity(np.arange(60).reshape(3, 4, 5), 'degC') t_level = interpolate_1d(units.Quantity(700, 'hPa'), p[:, None, None], t) - assert_array_almost_equal(t_level, - units.Quantity(np.arange(20., 40.).reshape(1, 4, 5), 'degC'), 7) + np.testing.assert_allclose( + t_level, + units.Quantity(np.arange(20., 40.).reshape(1, 4, 5), 'degC'), + rtol=1e-7 + ) From 3ef4341d6c7d7624e6a88584ff30960622a52e83 Mon Sep 17 00:00:00 2001 From: R Virinchi Date: Sat, 24 Jan 2026 03:08:26 +0530 Subject: [PATCH 5/8] explicitly added np.testing.assert_allclose --- tests/test_xarray.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/test_xarray.py b/tests/test_xarray.py index 0eddea0131..17f6afee8e 100644 --- a/tests/test_xarray.py +++ b/tests/test_xarray.py @@ -12,7 +12,7 @@ from metpy.plots.mapping import CFProjection from metpy.testing import (assert_almost_equal, assert_array_almost_equal, assert_array_equal, - get_test_data, assert_allclose) + get_test_data) from metpy.units import DimensionalityError, is_quantity, units from metpy.xarray import (add_vertical_dim_from_xarray, check_axis, check_matching_coordinates, grid_deltas_from_dataarray, preprocess_and_wrap) @@ -1417,8 +1417,8 @@ def test_grid_deltas_from_dataarray_lonlat(test_da_lonlat): [369802.28173967, 369802.28173967, 369802.28173967, 369802.28173967], [370009.56291098, 370009.56291098, 370009.56291098, 370009.56291098]]]) * units.m - assert_allclose(dx, true_dx, rtol=1e-6) - assert_allclose(dy, true_dy, rtol=1e-6) + np.testing.assert_allclose(dx, true_dx, rtol=1e-6) + np.testing.assert_allclose(dy, true_dy, rtol=1e-6) def test_grid_deltas_from_dataarray_xy(test_da_xy): @@ -1453,8 +1453,8 @@ def test_grid_deltas_from_dataarray_actual_xy(test_da_xy, ccrs): true_dy = [[[[496587.363, 496410.523, 495857.430, 494863.795], [499498.308, 499429.714, 499191.065, 498689.047], [499474.250, 499549.538, 499727.711, 499874.122]]]] * units.m - assert_allclose(dx, true_dx, rtol=1e-6) - assert_allclose(dy, true_dy, rtol=1e-6) + np.testing.assert_allclose(dx, true_dx, rtol=1e-6) + np.testing.assert_allclose(dy, true_dy, rtol=1e-6) def test_grid_deltas_from_dataarray_nominal_lonlat(test_da_lonlat): @@ -1462,8 +1462,8 @@ def test_grid_deltas_from_dataarray_nominal_lonlat(test_da_lonlat): dx, dy = grid_deltas_from_dataarray(test_da_lonlat, kind='nominal') true_dx = [[[3.333333] * 3]] * units.degrees true_dy = [[[3.333333]] * 3] * units.degrees - assert_allclose(dx, true_dx, rtol=1e-7, atol=1e-5) - assert_allclose(dy, true_dy, rtol=1e-7, atol=1e-5) + np.testing.assert_allclose(dx, true_dx, rtol=1e-7, atol=1e-5) + np.testing.assert_allclose(dy, true_dy, rtol=1e-7, atol=1e-5) def test_grid_deltas_from_dataarray_lonlat_assumed_order(): """Test grid_deltas_from_dataarray when dim order must be assumed.""" @@ -1490,8 +1490,8 @@ def test_grid_deltas_from_dataarray_lonlat_assumed_order(): [222031.0111961, 222107.8492205]] * units.m true_dy = [[175661.5413976, 170784.1311091, 165697.7563223], [175661.5413976, 170784.1311091, 165697.7563223]] * units.m - assert_allclose(dx, true_dx, rtol=1e-6) - assert_allclose(dy, true_dy, rtol=1e-6) + np.testing.assert_allclose(dx, true_dx, rtol=1e-6) + np.testing.assert_allclose(dy, true_dy, rtol=1e-6) def test_grid_deltas_from_dataarray_invalid_kind(test_da_xy): From 55f7fe41985dfbb7cf20c00714633ca4355b55bc Mon Sep 17 00:00:00 2001 From: R Virinchi Date: Sat, 24 Jan 2026 04:52:46 +0530 Subject: [PATCH 6/8] added unit assertions seperately and added pint ignore decorators wherever necessary --- tests/interpolate/test_grid.py | 4 ++++ tests/interpolate/test_one_dimension.py | 19 +++++++++++++++++++ tests/test_xarray.py | 21 +++++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/tests/interpolate/test_grid.py b/tests/interpolate/test_grid.py index 1c7459df5a..52f0c70a8e 100644 --- a/tests/interpolate/test_grid.py +++ b/tests/interpolate/test_grid.py @@ -198,6 +198,7 @@ def test_inverse_distance_to_grid(method, test_data, test_grid): None] +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_interpolate_to_isosurface(): r"""Test interpolation to level function.""" pv = np.array([[[4.29013406, 4.61736108, 4.97453387, 5.36730237, 5.75500645], @@ -246,6 +247,7 @@ def test_interpolate_to_isosurface(): @pytest.mark.parametrize('assume_units', [None, 'mbar']) @pytest.mark.parametrize('method', interp_methods) @pytest.mark.parametrize('boundary_coords', boundary_types) +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_interpolate_to_grid(method, assume_units, test_coords, boundary_coords): r"""Test main grid interpolation function.""" xp, yp = test_coords @@ -282,9 +284,11 @@ def test_interpolate_to_grid(method, assume_units, test_coords, boundary_coords) assert np.all(np.diff(xg, axis=-1) <= hres) assert np.all(np.diff(yg, axis=0) <= hres) + np.testing.assert_allclose(truth, img, rtol=1e-6, atol=1e-6) +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_interpolate_to_isosurface_from_below(): r"""Test interpolation to level function.""" pv = np.array([[[1.75, 1.875, 2., 2.125, 2.25], diff --git a/tests/interpolate/test_one_dimension.py b/tests/interpolate/test_one_dimension.py index b199727c47..c936a8089d 100644 --- a/tests/interpolate/test_one_dimension.py +++ b/tests/interpolate/test_one_dimension.py @@ -50,6 +50,7 @@ def test_log_interpolate_1d(): np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_log_interpolate_1d_mixed(): """Test log interpolation with a mix of compatible input types.""" x_log = xr.DataArray([1e3, 1e4, 1e5, 1e6]) @@ -60,6 +61,7 @@ def test_log_interpolate_1d_mixed(): np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_log_interpolate_1d_units(): """Test interpolating with log x-scale with units.""" x_log = np.array([1e3, 1e4, 1e5, 1e6]) * units.hPa @@ -67,8 +69,10 @@ def test_log_interpolate_1d_units(): x_interp = np.array([5e5, 5e6, 5e7]) * units.Pa y_interp_truth = np.array([20.0343863828, 24.6395565688, 29.2447267548]) * units.degC y_interp = log_interpolate_1d(x_interp, x_log, y_log) + assert y_interp.units == units.degC np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) + def test_log_interpolate_2d(): """Test interpolating with log x-scale in 2 dimensions.""" x_log = np.array([[1e3, 1e4, 1e5, 1e6], [1e3, 1e4, 1e5, 1e6]]) @@ -78,6 +82,7 @@ def test_log_interpolate_2d(): y_interp = log_interpolate_1d(x_interp, x_log, y_log, axis=1) np.testing.assert_allclose(y_interp[1], y_interp_truth, rtol=1e-7) + def test_log_interpolate_3d(): """Test interpolating with log x-scale 3 dimensions along second axis.""" x_log = np.ones((3, 4, 3)) * np.array([1e3, 1e4, 1e5, 1e6]).reshape(-1, 1) @@ -87,6 +92,7 @@ def test_log_interpolate_3d(): y_interp = log_interpolate_1d(x_interp, x_log, y_log, axis=1) np.testing.assert_allclose(y_interp[0, :, 0], y_interp_truth, rtol=1e-7) + def test_log_interpolate_4d(): """Test interpolating with log x-scale 4 dimensions.""" x_log = np.ones((2, 2, 3, 4)) * np.array([1e3, 1e4, 1e5, 1e6]) @@ -96,6 +102,7 @@ def test_log_interpolate_4d(): y_interp = log_interpolate_1d(x_interp, x_log, y_log, axis=3) np.testing.assert_allclose(y_interp[0, 0, 0, :], y_interp_truth, rtol=1e-7) + def test_log_interpolate_2args(): """Test interpolating with log x-scale with 2 arguments.""" x_log = np.array([1e3, 1e4, 1e5, 1e6]) @@ -107,6 +114,7 @@ def test_log_interpolate_2args(): np.testing.assert_allclose(y_interp[1], y_interp_truth, rtol=1e-7) np.testing.assert_allclose(y_interp[0], y_interp_truth, rtol=1e-7) + def test_log_interpolate_set_nan_above(): """Test interpolating with log x-scale setting out of bounds above data to nan.""" x_log = np.array([1e3, 1e4, 1e5, 1e6]) @@ -117,6 +125,7 @@ def test_log_interpolate_set_nan_above(): y_interp = log_interpolate_1d(x_interp, x_log, y_log) np.testing.assert_allclose(y_interp, y_interp_truth, equal_nan=True) + def test_log_interpolate_no_extrap(): """Test interpolating with log x-scale setting out of bounds value error.""" x_log = np.array([1e3, 1e4, 1e5, 1e6]) @@ -136,6 +145,7 @@ def test_log_interpolate_set_nan_below(): y_interp = log_interpolate_1d(x_interp, x_log, y_log) np.testing.assert_allclose(y_interp, y_interp_truth, equal_nan=True) + def test_interpolate_2args(): """Test interpolation with 2 arguments.""" x = np.array([1., 2., 3., 4.]) @@ -147,6 +157,7 @@ def test_interpolate_2args(): np.testing.assert_allclose(y_interp[0], y_interp_truth, rtol=1e-7) np.testing.assert_allclose(y_interp[1], y_interp_truth, rtol=1e-7) + def test_interpolate_decrease(): """Test interpolation with decreasing interpolation points.""" x = np.array([1., 2., 3., 4.]) @@ -156,6 +167,7 @@ def test_interpolate_decrease(): y_interp = interpolate_1d(x_interp, x, y) np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) + def test_interpolate_decrease_xp(): """Test interpolation with decreasing order.""" x = np.array([4., 3., 2., 1.]) @@ -165,6 +177,7 @@ def test_interpolate_decrease_xp(): y_interp = interpolate_1d(x_interp, x, y) np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) + def test_interpolate_end_point(): """Test interpolation with point at data endpoints.""" x = np.array([1., 2., 3., 4.]) @@ -174,6 +187,8 @@ def test_interpolate_end_point(): y_interp = interpolate_1d(x_interp, x, y) np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) + +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_interpolate_masked_units(): """Test interpolating with masked arrays with units.""" x = units.Quantity(np.ma.array([1., 2., 3., 4.]), units.m) @@ -181,14 +196,18 @@ def test_interpolate_masked_units(): x_interp = np.array([250., 350.]) * units.cm y_interp_truth = np.array([65., 75.]) * units.degC y_interp = interpolate_1d(x_interp, x, y) + assert y_interp.units == units.degC np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) + +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_interpolate_broadcast(): """Test interpolate_1d with input levels needing broadcasting.""" p = units.Quantity([850, 700, 500], 'hPa') t = units.Quantity(np.arange(60).reshape(3, 4, 5), 'degC') t_level = interpolate_1d(units.Quantity(700, 'hPa'), p[:, None, None], t) + assert t_level.units == units.degC np.testing.assert_allclose( t_level, units.Quantity(np.arange(20., 40.).reshape(1, 4, 5), 'degC'), diff --git a/tests/test_xarray.py b/tests/test_xarray.py index 17f6afee8e..10bcd06ed7 100644 --- a/tests/test_xarray.py +++ b/tests/test_xarray.py @@ -1406,6 +1406,7 @@ def func(a, b): assert_array_equal(result_21, expected_21) +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_grid_deltas_from_dataarray_lonlat(test_da_lonlat): """Test grid_deltas_from_dataarray with a lonlat grid.""" dx, dy = grid_deltas_from_dataarray(test_da_lonlat) @@ -1417,6 +1418,10 @@ def test_grid_deltas_from_dataarray_lonlat(test_da_lonlat): [369802.28173967, 369802.28173967, 369802.28173967, 369802.28173967], [370009.56291098, 370009.56291098, 370009.56291098, 370009.56291098]]]) * units.m + + assert dx.units == units.m + assert dy.units == units.m + np.testing.assert_allclose(dx, true_dx, rtol=1e-6) np.testing.assert_allclose(dy, true_dy, rtol=1e-6) @@ -1430,6 +1435,7 @@ def test_grid_deltas_from_dataarray_xy(test_da_xy): assert_array_almost_equal(dy, true_dy, 5) +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_grid_deltas_from_dataarray_actual_xy(test_da_xy, ccrs): """Test grid_deltas_from_dataarray with a xy grid and kind='actual'.""" # Construct lon/lat coordinates @@ -1453,18 +1459,29 @@ def test_grid_deltas_from_dataarray_actual_xy(test_da_xy, ccrs): true_dy = [[[[496587.363, 496410.523, 495857.430, 494863.795], [499498.308, 499429.714, 499191.065, 498689.047], [499474.250, 499549.538, 499727.711, 499874.122]]]] * units.m + + assert dx.units == units.m + assert dy.units == units.m + np.testing.assert_allclose(dx, true_dx, rtol=1e-6) np.testing.assert_allclose(dy, true_dy, rtol=1e-6) +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_grid_deltas_from_dataarray_nominal_lonlat(test_da_lonlat): """Test grid_deltas_from_dataarray with a lonlat grid and kind='nominal'.""" dx, dy = grid_deltas_from_dataarray(test_da_lonlat, kind='nominal') true_dx = [[[3.333333] * 3]] * units.degrees true_dy = [[[3.333333]] * 3] * units.degrees + + assert dx.units.is_compatible_with(units.degrees) + assert dy.units.is_compatible_with(units.degrees) + np.testing.assert_allclose(dx, true_dx, rtol=1e-7, atol=1e-5) np.testing.assert_allclose(dy, true_dy, rtol=1e-7, atol=1e-5) + +@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") def test_grid_deltas_from_dataarray_lonlat_assumed_order(): """Test grid_deltas_from_dataarray when dim order must be assumed.""" # Create test dataarray @@ -1490,6 +1507,10 @@ def test_grid_deltas_from_dataarray_lonlat_assumed_order(): [222031.0111961, 222107.8492205]] * units.m true_dy = [[175661.5413976, 170784.1311091, 165697.7563223], [175661.5413976, 170784.1311091, 165697.7563223]] * units.m + + assert dx.units == units.m + assert dy.units == units.m + np.testing.assert_allclose(dx, true_dx, rtol=1e-6) np.testing.assert_allclose(dy, true_dy, rtol=1e-6) From 57832c286afa90e81ee3a4bbf40e44cfc9062579 Mon Sep 17 00:00:00 2001 From: R Virinchi Date: Mon, 26 Jan 2026 15:30:27 +0530 Subject: [PATCH 7/8] replaced double quotes with single quotes --- tests/interpolate/test_grid.py | 6 +++--- tests/interpolate/test_one_dimension.py | 8 ++++---- tests/test_xarray.py | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/interpolate/test_grid.py b/tests/interpolate/test_grid.py index 52f0c70a8e..53c4588f90 100644 --- a/tests/interpolate/test_grid.py +++ b/tests/interpolate/test_grid.py @@ -198,7 +198,7 @@ def test_inverse_distance_to_grid(method, test_data, test_grid): None] -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_interpolate_to_isosurface(): r"""Test interpolation to level function.""" pv = np.array([[[4.29013406, 4.61736108, 4.97453387, 5.36730237, 5.75500645], @@ -247,7 +247,7 @@ def test_interpolate_to_isosurface(): @pytest.mark.parametrize('assume_units', [None, 'mbar']) @pytest.mark.parametrize('method', interp_methods) @pytest.mark.parametrize('boundary_coords', boundary_types) -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_interpolate_to_grid(method, assume_units, test_coords, boundary_coords): r"""Test main grid interpolation function.""" xp, yp = test_coords @@ -288,7 +288,7 @@ def test_interpolate_to_grid(method, assume_units, test_coords, boundary_coords) np.testing.assert_allclose(truth, img, rtol=1e-6, atol=1e-6) -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_interpolate_to_isosurface_from_below(): r"""Test interpolation to level function.""" pv = np.array([[[1.75, 1.875, 2., 2.125, 2.25], diff --git a/tests/interpolate/test_one_dimension.py b/tests/interpolate/test_one_dimension.py index c936a8089d..cb96e6ee3b 100644 --- a/tests/interpolate/test_one_dimension.py +++ b/tests/interpolate/test_one_dimension.py @@ -50,7 +50,7 @@ def test_log_interpolate_1d(): np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_log_interpolate_1d_mixed(): """Test log interpolation with a mix of compatible input types.""" x_log = xr.DataArray([1e3, 1e4, 1e5, 1e6]) @@ -61,7 +61,7 @@ def test_log_interpolate_1d_mixed(): np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_log_interpolate_1d_units(): """Test interpolating with log x-scale with units.""" x_log = np.array([1e3, 1e4, 1e5, 1e6]) * units.hPa @@ -188,7 +188,7 @@ def test_interpolate_end_point(): np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_interpolate_masked_units(): """Test interpolating with masked arrays with units.""" x = units.Quantity(np.ma.array([1., 2., 3., 4.]), units.m) @@ -200,7 +200,7 @@ def test_interpolate_masked_units(): np.testing.assert_allclose(y_interp, y_interp_truth, rtol=1e-7) -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_interpolate_broadcast(): """Test interpolate_1d with input levels needing broadcasting.""" p = units.Quantity([850, 700, 500], 'hPa') diff --git a/tests/test_xarray.py b/tests/test_xarray.py index 10bcd06ed7..f706701aa7 100644 --- a/tests/test_xarray.py +++ b/tests/test_xarray.py @@ -1406,7 +1406,7 @@ def func(a, b): assert_array_equal(result_21, expected_21) -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_grid_deltas_from_dataarray_lonlat(test_da_lonlat): """Test grid_deltas_from_dataarray with a lonlat grid.""" dx, dy = grid_deltas_from_dataarray(test_da_lonlat) @@ -1435,7 +1435,7 @@ def test_grid_deltas_from_dataarray_xy(test_da_xy): assert_array_almost_equal(dy, true_dy, 5) -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_grid_deltas_from_dataarray_actual_xy(test_da_xy, ccrs): """Test grid_deltas_from_dataarray with a xy grid and kind='actual'.""" # Construct lon/lat coordinates @@ -1467,7 +1467,7 @@ def test_grid_deltas_from_dataarray_actual_xy(test_da_xy, ccrs): np.testing.assert_allclose(dy, true_dy, rtol=1e-6) -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_grid_deltas_from_dataarray_nominal_lonlat(test_da_lonlat): """Test grid_deltas_from_dataarray with a lonlat grid and kind='nominal'.""" dx, dy = grid_deltas_from_dataarray(test_da_lonlat, kind='nominal') @@ -1481,7 +1481,7 @@ def test_grid_deltas_from_dataarray_nominal_lonlat(test_da_lonlat): np.testing.assert_allclose(dy, true_dy, rtol=1e-7, atol=1e-5) -@pytest.mark.filterwarnings("ignore::pint.errors.UnitStrippedWarning") +@pytest.mark.filterwarnings('ignore::pint.errors.UnitStrippedWarning') def test_grid_deltas_from_dataarray_lonlat_assumed_order(): """Test grid_deltas_from_dataarray when dim order must be assumed.""" # Create test dataarray From 7197f0716fffdcfdc8b028b47d86a7cda279ac65 Mon Sep 17 00:00:00 2001 From: R Virinchi Date: Mon, 26 Jan 2026 15:43:45 +0530 Subject: [PATCH 8/8] skip remote data example to avoid nondeterministic gallery failures --- examples/remote/basic.py | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/remote/basic.py b/examples/remote/basic.py index ff62ec1cf7..725f28df1e 100644 --- a/examples/remote/basic.py +++ b/examples/remote/basic.py @@ -1,3 +1,4 @@ +# sphinx_gallery_skip = True # Copyright (c) 2023 MetPy Developers. # Distributed under the terms of the BSD 3-Clause License. # SPDX-License-Identifier: BSD-3-Clause