Skip to content

Commit 365362a

Browse files
ensure to dispatch Series.equals to EA.equals
1 parent b6ad2fb commit 365362a

File tree

5 files changed

+17
-23
lines changed

5 files changed

+17
-23
lines changed

pandas/core/internals/blocks.py

+5
Original file line numberDiff line numberDiff line change
@@ -1861,6 +1861,11 @@ def where(
18611861

18621862
return [self.make_block_same_class(result, placement=self.mgr_locs)]
18631863

1864+
def equals(self, other) -> bool:
1865+
if self.dtype != other.dtype or self.shape != other.shape:
1866+
return False
1867+
return self.values.equals(other.values)
1868+
18641869
def _unstack(self, unstacker, fill_value, new_placement):
18651870
# ExtensionArray-safe unstack.
18661871
# We override ObjectBlock._unstack, which unstacks directly on the

pandas/tests/extension/base/methods.py

+7-18
Original file line numberDiff line numberDiff line change
@@ -422,14 +422,19 @@ def test_repeat_raises(self, data, repeats, kwargs, error, msg, use_numpy):
422422
else:
423423
data.repeat(repeats, **kwargs)
424424

425-
def test_equals(self, data, na_value):
425+
def test_equals(self, data, na_value, as_series):
426426
data2 = type(data)._from_sequence([data[0]] * len(data), dtype=data.dtype)
427427
data_na = type(data)._from_sequence([na_value] * len(data), dtype=data.dtype)
428428

429+
if as_series:
430+
data = pd.Series(data)
431+
data2 = pd.Series(data2)
432+
data_na = pd.Series(data_na)
433+
429434
assert data.equals(data) is True
430435
assert data.equals(data.copy()) is True
431436

432-
# other data
437+
# unequal other data
433438
assert data.equals(data2) is False
434439
assert data.equals(data_na) is False
435440

@@ -442,19 +447,3 @@ def test_equals(self, data, na_value):
442447
# other types
443448
assert data.equals(None) is False
444449
assert data[[0]].equals(data[0]) is False
445-
446-
# TODO test series
447-
# ser = pd.Series(data)
448-
# smaller_ser = pd.Series(data[:5])
449-
# na_ser = pd.Series(type(data)._from_sequence([na_value], dtype=data.dtype))
450-
451-
# assert ser.equals(ser)
452-
# assert na_ser.equals(na_ser)
453-
454-
# assert not data.equals(na_value)
455-
# assert not na_ser.equals(ser)
456-
# assert not ser.equals(na_ser)
457-
# assert not ser.equals(smaller_ser)
458-
# assert not ser.equals(np.asarray(data))
459-
# assert not ser.equals(0)
460-
# assert not na_ser.equals(0)

pandas/tests/extension/json/test_json.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ def test_searchsorted(self, data_for_sorting):
248248
super().test_searchsorted(data_for_sorting)
249249

250250
@pytest.mark.skip(reason="Can't compare dicts.")
251-
def test_equals(self, data, na_value):
251+
def test_equals(self, data, na_value, as_series):
252252
pass
253253

254254

pandas/tests/extension/test_numpy.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,9 @@ def test_diff(self, data, periods):
262262
return super().test_diff(data, periods)
263263

264264
@skip_nested
265-
def test_equals(self, data, na_value):
265+
def test_equals(self, data, na_value, as_series):
266266
# Fails creating with _from_sequence
267-
super().test_equals(data, na_value)
267+
super().test_equals(data, na_value, as_series)
268268

269269

270270
@skip_nested

pandas/tests/extension/test_sparse.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -316,9 +316,9 @@ def test_shift_0_periods(self, data):
316316
data._sparse_values[0] = data._sparse_values[1]
317317
assert result._sparse_values[0] != result._sparse_values[1]
318318

319-
def test_equals(self, data, na_value):
319+
def test_equals(self, data, na_value, as_series):
320320
self._check_unsupported(data)
321-
super().test_equals(data, na_value)
321+
super().test_equals(data, na_value, as_series)
322322

323323

324324
class TestCasting(BaseSparseTests, base.BaseCastingTests):

0 commit comments

Comments
 (0)