Skip to content

Commit 15db834

Browse files
committed
Add tests for Series and DataFrame for attrs binary operations
1 parent 38efbaa commit 15db834

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

pandas/tests/frame/test_api.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,22 @@ def test_attrs_deepcopy(self):
324324
assert result.attrs == df.attrs
325325
assert result.attrs["tags"] is not df.attrs["tags"]
326326

327+
def test_attrs_binary_operations(self):
328+
# GH 51607
329+
df_1 = DataFrame({"A": [2, 3]})
330+
df_2 = DataFrame({"A": [-3, 9]})
331+
attrs = {"info": "DataFrame"}
332+
df_1.attrs = attrs
333+
assert (df_1 + df_2).attrs == attrs
334+
assert (df_2 + df_1).attrs == attrs
335+
assert (df_2 - df_1).attrs == attrs
336+
assert (df_2 / df_1).attrs == attrs
337+
assert (df_2 * df_1).attrs == attrs
338+
assert (df_2.add(df_1)).attrs == attrs
339+
assert (df_2.sub(df_1)).attrs == attrs
340+
assert (df_2.div(df_1)).attrs == attrs
341+
assert (df_2.mul(df_1)).attrs == attrs
342+
327343
@pytest.mark.parametrize("allows_duplicate_labels", [True, False, None])
328344
def test_set_flags(
329345
self,

pandas/tests/series/test_api.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,22 @@ def test_attrs(self):
164164
result = s + 1
165165
assert result.attrs == {"version": 1}
166166

167+
def test_attrs_binary_operations(self):
168+
# GH 51607
169+
s1 = Series([2, 5])
170+
s2 = Series([7, -1])
171+
attrs = {"info": "Series"}
172+
s1.attrs = attrs
173+
assert (s1 + s2).attrs == attrs
174+
assert (s2 + s1).attrs == attrs
175+
assert (s2 - s1).attrs == attrs
176+
assert (s2 / s1).attrs == attrs
177+
assert (s2 * s1).attrs == attrs
178+
assert (s2.add(s1)).attrs == attrs
179+
assert (s2.sub(s1)).attrs == attrs
180+
assert (s2.div(s1)).attrs == attrs
181+
assert (s2.mul(s1)).attrs == attrs
182+
167183
@pytest.mark.xfail(
168184
using_string_dtype() and not HAS_PYARROW, reason="TODO(infer_string)"
169185
)

0 commit comments

Comments
 (0)