Skip to content

Commit

Permalink
Replace bare assert with assert_identical (pydata#4752)
Browse files Browse the repository at this point in the history
* Replace bare assert with assert_identical

* Update xarray/tests/test_computation.py

* Update xarray/tests/test_computation.py

* Another run through, based on @dcherian feedback

* Add an equals one

* Update xarray/tests/test_dask.py

Co-authored-by: keewis <[email protected]>

* Update xarray/tests/test_extensions.py

Co-authored-by: keewis <[email protected]>

* whatsnew

* isort

Co-authored-by: Deepak Cherian <[email protected]>
Co-authored-by: keewis <[email protected]>
  • Loading branch information
3 people authored Jan 4, 2021
1 parent ed25573 commit 510cf7d
Show file tree
Hide file tree
Showing 9 changed files with 47 additions and 39 deletions.
5 changes: 5 additions & 0 deletions doc/whats-new.rst
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@ Internal Changes
- Run the tests in parallel using pytest-xdist (:pull:`4694`).

By `Justus Magin <https://github.com/keewis>`_ and `Mathias Hauser <https://github.com/mathause>`_.

- Replace all usages of ``assert x.identical(y)`` with ``assert_identical(x, y)``
for clearer error messages.
(:pull:`4752`);
By `Maximilian Roos <https://github.com/max-sixty>`_.

.. _whats-new.0.16.2:

Expand Down
2 changes: 1 addition & 1 deletion xarray/tests/test_combine.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ def test_concat_one_dim_merge_another(self):

expected = data[["var1", "var2"]]
actual = combine_nested(objs, concat_dim=[None, "dim2"])
assert expected.identical(actual)
assert_identical(expected, actual)

def test_auto_combine_2d(self):
ds = create_test_data
Expand Down
8 changes: 5 additions & 3 deletions xarray/tests/test_computation.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@


def assert_identical(a, b):
""" A version of this function which accepts numpy arrays """
from xarray.testing import assert_identical as assert_identical_

if hasattr(a, "identical"):
msg = f"not identical:\n{a!r}\n{b!r}"
assert a.identical(b), msg
assert_identical_(a, b)
else:
assert_array_equal(a, b)

Expand Down Expand Up @@ -1306,7 +1308,7 @@ def test_dot(use_dask):
# for only a single array is passed without dims argument, just return
# as is
actual = xr.dot(da_a)
assert da_a.identical(actual)
assert_identical(da_a, actual)

# test for variable
actual = xr.dot(da_a.variable, da_b.variable)
Expand Down
4 changes: 2 additions & 2 deletions xarray/tests/test_dataarray.py
Original file line number Diff line number Diff line change
Expand Up @@ -1494,8 +1494,8 @@ def test_broadcast_like(self):
new1 = arr1.broadcast_like(arr2)
new2 = arr2.broadcast_like(arr1)

assert orig1.identical(new1)
assert orig2.identical(new2)
assert_identical(orig1, new1)
assert_identical(orig2, new2)

orig3 = DataArray(np.random.randn(5), [("x", range(5))])
orig4 = DataArray(np.random.randn(6), [("y", range(6))])
Expand Down
3 changes: 2 additions & 1 deletion xarray/tests/test_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -2127,7 +2127,8 @@ def test_align_indexes(self):
def test_align_non_unique(self):
x = Dataset({"foo": ("x", [3, 4, 5]), "x": [0, 0, 1]})
x1, x2 = align(x, x)
assert x1.identical(x) and x2.identical(x)
assert_identical(x1, x)
assert_identical(x2, x)

y = Dataset({"bar": ("x", [6, 7]), "x": [0, 1]})
with raises_regex(ValueError, "cannot reindex or align"):
Expand Down
8 changes: 4 additions & 4 deletions xarray/tests/test_extensions.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import xarray as xr

from . import raises_regex
from . import assert_identical, raises_regex


@xr.register_dataset_accessor("example_accessor")
Expand Down Expand Up @@ -61,20 +61,20 @@ class Foo:
def test_pickle_dataset(self):
ds = xr.Dataset()
ds_restored = pickle.loads(pickle.dumps(ds))
assert ds.identical(ds_restored)
assert_identical(ds, ds_restored)

# state save on the accessor is restored
assert ds.example_accessor is ds.example_accessor
ds.example_accessor.value = "foo"
ds_restored = pickle.loads(pickle.dumps(ds))
assert ds.identical(ds_restored)
assert_identical(ds, ds_restored)
assert ds_restored.example_accessor.value == "foo"

def test_pickle_dataarray(self):
array = xr.Dataset()
assert array.example_accessor is array.example_accessor
array_restored = pickle.loads(pickle.dumps(array))
assert array.identical(array_restored)
assert_identical(array, array_restored)

def test_broken_accessor(self):
# regression test for GH933
Expand Down
44 changes: 22 additions & 22 deletions xarray/tests/test_merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import xarray as xr
from xarray.core import dtypes, merge
from xarray.core.merge import MergeError
from xarray.testing import assert_identical
from xarray.testing import assert_equal, assert_identical

from . import raises_regex
from .test_dataset import create_test_data
Expand Down Expand Up @@ -33,17 +33,17 @@ def test_merge_arrays(self):
data = create_test_data()
actual = xr.merge([data.var1, data.var2])
expected = data[["var1", "var2"]]
assert actual.identical(expected)
assert_identical(actual, expected)

def test_merge_datasets(self):
data = create_test_data()

actual = xr.merge([data[["var1"]], data[["var2"]]])
expected = data[["var1", "var2"]]
assert actual.identical(expected)
assert_identical(actual, expected)

actual = xr.merge([data, data])
assert actual.identical(data)
assert_identical(actual, data)

def test_merge_dataarray_unnamed(self):
data = xr.DataArray([1, 2], dims="x")
Expand All @@ -61,7 +61,7 @@ def test_merge_arrays_attrs_default(self):
actual = xr.merge([data.var1, data.var2])
expected = data[["var1", "var2"]]
expected.attrs = expected_attrs
assert actual.identical(expected)
assert_identical(actual, expected)

@pytest.mark.parametrize(
"combine_attrs, var1_attrs, var2_attrs, expected_attrs, expect_exception",
Expand Down Expand Up @@ -107,7 +107,7 @@ def test_merge_arrays_attrs(
actual = xr.merge([data.var1, data.var2], combine_attrs=combine_attrs)
expected = data[["var1", "var2"]]
expected.attrs = expected_attrs
assert actual.identical(expected)
assert_identical(actual, expected)

def test_merge_attrs_override_copy(self):
ds1 = xr.Dataset(attrs={"x": 0})
Expand All @@ -119,12 +119,12 @@ def test_merge_attrs_override_copy(self):
def test_merge_dicts_simple(self):
actual = xr.merge([{"foo": 0}, {"bar": "one"}, {"baz": 3.5}])
expected = xr.Dataset({"foo": 0, "bar": "one", "baz": 3.5})
assert actual.identical(expected)
assert_identical(actual, expected)

def test_merge_dicts_dims(self):
actual = xr.merge([{"y": ("x", [13])}, {"x": [12]}])
expected = xr.Dataset({"x": [12], "y": ("x", [13])})
assert actual.identical(expected)
assert_identical(actual, expected)

def test_merge_error(self):
ds = xr.Dataset({"x": 0})
Expand Down Expand Up @@ -174,7 +174,7 @@ def test_merge_no_conflicts_multi_var(self):

expected = data[["var1", "var2"]]
actual = xr.merge([data1.var1, data2.var2], compat="no_conflicts")
assert expected.identical(actual)
assert_identical(expected, actual)

data1["var1"][:, :5] = np.nan
data2["var1"][:, 5:] = np.nan
Expand All @@ -183,22 +183,22 @@ def test_merge_no_conflicts_multi_var(self):
del data2["var3"]

actual = xr.merge([data1, data2], compat="no_conflicts")
assert data.equals(actual)
assert_equal(data, actual)

def test_merge_no_conflicts_preserve_attrs(self):
data = xr.Dataset({"x": ([], 0, {"foo": "bar"})})
actual = xr.merge([data, data])
assert data.identical(actual)
assert_identical(data, actual)

def test_merge_no_conflicts_broadcast(self):
datasets = [xr.Dataset({"x": ("y", [0])}), xr.Dataset({"x": np.nan})]
actual = xr.merge(datasets)
expected = xr.Dataset({"x": ("y", [0])})
assert expected.identical(actual)
assert_identical(expected, actual)

datasets = [xr.Dataset({"x": ("y", [np.nan])}), xr.Dataset({"x": 0})]
actual = xr.merge(datasets)
assert expected.identical(actual)
assert_identical(expected, actual)


class TestMergeMethod:
Expand All @@ -208,17 +208,17 @@ def test_merge(self):
ds2 = data[["var3"]]
expected = data[["var1", "var3"]]
actual = ds1.merge(ds2)
assert expected.identical(actual)
assert_identical(expected, actual)

actual = ds2.merge(ds1)
assert expected.identical(actual)
assert_identical(expected, actual)

actual = data.merge(data)
assert data.identical(actual)
assert_identical(data, actual)
actual = data.reset_coords(drop=True).merge(data)
assert data.identical(actual)
assert_identical(data, actual)
actual = data.merge(data.reset_coords(drop=True))
assert data.identical(actual)
assert_identical(data, actual)

with pytest.raises(ValueError):
ds1.merge(ds2.rename({"var3": "var1"}))
Expand All @@ -231,19 +231,19 @@ def test_merge_broadcast_equals(self):
ds1 = xr.Dataset({"x": 0})
ds2 = xr.Dataset({"x": ("y", [0, 0])})
actual = ds1.merge(ds2)
assert ds2.identical(actual)
assert_identical(ds2, actual)

actual = ds2.merge(ds1)
assert ds2.identical(actual)
assert_identical(ds2, actual)

actual = ds1.copy()
actual.update(ds2)
assert ds2.identical(actual)
assert_identical(ds2, actual)

ds1 = xr.Dataset({"x": np.nan})
ds2 = xr.Dataset({"x": ("y", [np.nan, np.nan])})
actual = ds1.merge(ds2)
assert ds2.identical(actual)
assert_identical(ds2, actual)

def test_merge_compat(self):
ds1 = xr.Dataset({"x": 0})
Expand Down
2 changes: 1 addition & 1 deletion xarray/tests/test_sparse.py
Original file line number Diff line number Diff line change
Expand Up @@ -651,7 +651,7 @@ def test_stack(self):
assert_equal(expected, stacked)

roundtripped = stacked.unstack()
assert arr.identical(roundtripped)
assert_identical(arr, roundtripped)

@pytest.mark.filterwarnings("ignore::PendingDeprecationWarning")
def test_ufuncs(self):
Expand Down
10 changes: 5 additions & 5 deletions xarray/tests/test_variable.py
Original file line number Diff line number Diff line change
Expand Up @@ -1392,7 +1392,7 @@ def test_transpose_0d(self):
]:
variable = Variable([], value)
actual = variable.transpose()
assert actual.identical(variable)
assert_identical(actual, variable)

def test_squeeze(self):
v = Variable(["x", "y"], [[1]])
Expand Down Expand Up @@ -1445,7 +1445,7 @@ def test_set_dims_object_dtype(self):
for i in range(3):
exp_values[i] = ("a", 1)
expected = Variable(["x"], exp_values)
assert actual.identical(expected)
assert_identical(actual, expected)

def test_stack(self):
v = Variable(["x", "y"], [[0, 1], [2, 3]], {"foo": "bar"})
Expand Down Expand Up @@ -2075,20 +2075,20 @@ def test_concat_periods(self):
coords = [IndexVariable("t", periods[:5]), IndexVariable("t", periods[5:])]
expected = IndexVariable("t", periods)
actual = IndexVariable.concat(coords, dim="t")
assert actual.identical(expected)
assert_identical(actual, expected)
assert isinstance(actual.to_index(), pd.PeriodIndex)

positions = [list(range(5)), list(range(5, 10))]
actual = IndexVariable.concat(coords, dim="t", positions=positions)
assert actual.identical(expected)
assert_identical(actual, expected)
assert isinstance(actual.to_index(), pd.PeriodIndex)

def test_concat_multiindex(self):
idx = pd.MultiIndex.from_product([[0, 1, 2], ["a", "b"]])
coords = [IndexVariable("x", idx[:2]), IndexVariable("x", idx[2:])]
expected = IndexVariable("x", idx)
actual = IndexVariable.concat(coords, dim="x")
assert actual.identical(expected)
assert_identical(actual, expected)
assert isinstance(actual.to_index(), pd.MultiIndex)

def test_coordinate_alias(self):
Expand Down

0 comments on commit 510cf7d

Please sign in to comment.