Skip to content

Commit f2794fd

Browse files
authored
REF: misplaced tests, parametrize, simplify (#55870)
* REF: misplaced tests * REF: libalgos tests * rename standard pattern * split tests * simplify reset_index tests * REF: misplaced tests * de-duplicate test * parametrize * revert
1 parent 7b32c17 commit f2794fd

18 files changed

+372
-443
lines changed

pandas/tests/arithmetic/test_datetime64.py

+19-76
Original file line numberDiff line numberDiff line change
@@ -1421,8 +1421,9 @@ def test_dt64arr_add_sub_relativedelta_offsets(self, box_with_array, unit):
14211421
@pytest.mark.parametrize("normalize", [True, False])
14221422
@pytest.mark.parametrize("n", [0, 5])
14231423
@pytest.mark.parametrize("unit", ["s", "ms", "us", "ns"])
1424+
@pytest.mark.parametrize("tz", [None, "US/Central"])
14241425
def test_dt64arr_add_sub_DateOffsets(
1425-
self, box_with_array, n, normalize, cls_and_kwargs, unit
1426+
self, box_with_array, n, normalize, cls_and_kwargs, unit, tz
14261427
):
14271428
# GH#10699
14281429
# assert vectorized operation matches pointwise operations
@@ -1444,33 +1445,33 @@ def test_dt64arr_add_sub_DateOffsets(
14441445
# passing n = 0 is invalid for these offset classes
14451446
return
14461447

1447-
vec = DatetimeIndex(
1448-
[
1449-
Timestamp("2000-01-05 00:15:00"),
1450-
Timestamp("2000-01-31 00:23:00"),
1451-
Timestamp("2000-01-01"),
1452-
Timestamp("2000-03-31"),
1453-
Timestamp("2000-02-29"),
1454-
Timestamp("2000-12-31"),
1455-
Timestamp("2000-05-15"),
1456-
Timestamp("2001-06-15"),
1457-
]
1458-
).as_unit(unit)
1448+
vec = (
1449+
DatetimeIndex(
1450+
[
1451+
Timestamp("2000-01-05 00:15:00"),
1452+
Timestamp("2000-01-31 00:23:00"),
1453+
Timestamp("2000-01-01"),
1454+
Timestamp("2000-03-31"),
1455+
Timestamp("2000-02-29"),
1456+
Timestamp("2000-12-31"),
1457+
Timestamp("2000-05-15"),
1458+
Timestamp("2001-06-15"),
1459+
]
1460+
)
1461+
.as_unit(unit)
1462+
.tz_localize(tz)
1463+
)
14591464
vec = tm.box_expected(vec, box_with_array)
14601465
vec_items = vec.iloc[0] if box_with_array is pd.DataFrame else vec
14611466

14621467
offset_cls = getattr(pd.offsets, cls_name)
1463-
1464-
# pandas.errors.PerformanceWarning: Non-vectorized DateOffset being
1465-
# applied to Series or DatetimeIndex
1466-
# we aren't testing that here, so ignore.
1467-
14681468
offset = offset_cls(n, normalize=normalize, **kwargs)
14691469

14701470
# TODO(GH#55564): as_unit will be unnecessary
14711471
expected = DatetimeIndex([x + offset for x in vec_items]).as_unit(unit)
14721472
expected = tm.box_expected(expected, box_with_array)
14731473
tm.assert_equal(expected, vec + offset)
1474+
tm.assert_equal(expected, offset + vec)
14741475

14751476
expected = DatetimeIndex([x - offset for x in vec_items]).as_unit(unit)
14761477
expected = tm.box_expected(expected, box_with_array)
@@ -1483,64 +1484,6 @@ def test_dt64arr_add_sub_DateOffsets(
14831484
with pytest.raises(TypeError, match=msg):
14841485
offset - vec
14851486

1486-
def test_dt64arr_add_sub_DateOffset(self, box_with_array):
1487-
# GH#10699
1488-
s = date_range("2000-01-01", "2000-01-31", name="a")
1489-
s = tm.box_expected(s, box_with_array)
1490-
result = s + DateOffset(years=1)
1491-
result2 = DateOffset(years=1) + s
1492-
exp = date_range("2001-01-01", "2001-01-31", name="a")._with_freq(None)
1493-
exp = tm.box_expected(exp, box_with_array)
1494-
tm.assert_equal(result, exp)
1495-
tm.assert_equal(result2, exp)
1496-
1497-
result = s - DateOffset(years=1)
1498-
exp = date_range("1999-01-01", "1999-01-31", name="a")._with_freq(None)
1499-
exp = tm.box_expected(exp, box_with_array)
1500-
tm.assert_equal(result, exp)
1501-
1502-
s = DatetimeIndex(
1503-
[
1504-
Timestamp("2000-01-15 00:15:00", tz="US/Central"),
1505-
Timestamp("2000-02-15", tz="US/Central"),
1506-
],
1507-
name="a",
1508-
)
1509-
s = tm.box_expected(s, box_with_array)
1510-
result = s + pd.offsets.Day()
1511-
result2 = pd.offsets.Day() + s
1512-
exp = DatetimeIndex(
1513-
[
1514-
Timestamp("2000-01-16 00:15:00", tz="US/Central"),
1515-
Timestamp("2000-02-16", tz="US/Central"),
1516-
],
1517-
name="a",
1518-
)
1519-
exp = tm.box_expected(exp, box_with_array)
1520-
tm.assert_equal(result, exp)
1521-
tm.assert_equal(result2, exp)
1522-
1523-
s = DatetimeIndex(
1524-
[
1525-
Timestamp("2000-01-15 00:15:00", tz="US/Central"),
1526-
Timestamp("2000-02-15", tz="US/Central"),
1527-
],
1528-
name="a",
1529-
)
1530-
s = tm.box_expected(s, box_with_array)
1531-
result = s + pd.offsets.MonthEnd()
1532-
result2 = pd.offsets.MonthEnd() + s
1533-
exp = DatetimeIndex(
1534-
[
1535-
Timestamp("2000-01-31 00:15:00", tz="US/Central"),
1536-
Timestamp("2000-02-29", tz="US/Central"),
1537-
],
1538-
name="a",
1539-
)
1540-
exp = tm.box_expected(exp, box_with_array)
1541-
tm.assert_equal(result, exp)
1542-
tm.assert_equal(result2, exp)
1543-
15441487
@pytest.mark.parametrize(
15451488
"other",
15461489
[

pandas/tests/arithmetic/test_numeric.py

+12
Original file line numberDiff line numberDiff line change
@@ -1393,6 +1393,18 @@ def test_addsub_arithmetic(self, dtype, delta):
13931393
tm.assert_index_equal(index - index, 0 * index)
13941394
assert not (index - index).empty
13951395

1396+
def test_pow_nan_with_zero(self, box_with_array):
1397+
left = Index([np.nan, np.nan, np.nan])
1398+
right = Index([0, 0, 0])
1399+
expected = Index([1.0, 1.0, 1.0])
1400+
1401+
left = tm.box_expected(left, box_with_array)
1402+
right = tm.box_expected(right, box_with_array)
1403+
expected = tm.box_expected(expected, box_with_array)
1404+
1405+
result = left**right
1406+
tm.assert_equal(result, expected)
1407+
13961408

13971409
def test_fill_value_inf_masking():
13981410
# GH #27464 make sure we mask 0/1 with Inf and not NaN

pandas/tests/arrays/integer/test_dtypes.py

-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ def test_dtypes(dtype):
2323

2424
@pytest.mark.parametrize("op", ["sum", "min", "max", "prod"])
2525
def test_preserve_dtypes(op):
26-
# TODO(#22346): preserve Int64 dtype
2726
# for ops that enable (mean would actually work here
2827
# but generally it is a float return value)
2928
df = pd.DataFrame(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from pandas.core.arrays import IntervalArray
2+
3+
4+
def test_repr():
5+
# GH#25022
6+
arr = IntervalArray.from_tuples([(0, 1), (1, 2)])
7+
result = repr(arr)
8+
expected = (
9+
"<IntervalArray>\n"
10+
"[(0, 1], (1, 2]]\n"
11+
"Length: 2, dtype: interval[int64, right]"
12+
)
13+
assert result == expected

pandas/tests/arrays/interval/test_interval.py

-12
Original file line numberDiff line numberDiff line change
@@ -166,18 +166,6 @@ def test_setitem_mismatched_closed(self):
166166
tm.assert_interval_array_equal(arr, orig)
167167

168168

169-
def test_repr():
170-
# GH 25022
171-
arr = IntervalArray.from_tuples([(0, 1), (1, 2)])
172-
result = repr(arr)
173-
expected = (
174-
"<IntervalArray>\n"
175-
"[(0, 1], (1, 2]]\n"
176-
"Length: 2, dtype: interval[int64, right]"
177-
)
178-
assert result == expected
179-
180-
181169
class TestReductions:
182170
def test_min_max_invalid_axis(self, left_right_dtypes):
183171
left, right = left_right_dtypes

pandas/tests/frame/methods/test_reset_index.py

+16-38
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ def test_reset_index_tz(self, tz_aware_fixture):
8282
},
8383
columns=["idx", "a", "b"],
8484
)
85-
tm.assert_frame_equal(df.reset_index(), expected)
85+
result = df.reset_index()
86+
tm.assert_frame_equal(result, expected)
8687

8788
@pytest.mark.parametrize("tz", ["US/Eastern", "dateutil/US/Eastern"])
8889
def test_frame_reset_index_tzaware_index(self, tz):
@@ -487,23 +488,20 @@ def test_reset_index_datetime(self, tz_naive_fixture):
487488

488489
expected = DataFrame(
489490
{
490-
"idx1": [
491-
datetime(2011, 1, 1),
492-
datetime(2011, 1, 2),
493-
datetime(2011, 1, 3),
494-
datetime(2011, 1, 4),
495-
datetime(2011, 1, 5),
496-
],
491+
"idx1": idx1,
497492
"idx2": np.arange(5, dtype="int64"),
498493
"a": np.arange(5, dtype="int64"),
499494
"b": ["A", "B", "C", "D", "E"],
500495
},
501496
columns=["idx1", "idx2", "a", "b"],
502497
)
503-
expected["idx1"] = expected["idx1"].apply(lambda d: Timestamp(d, tz=tz))
504498

505499
tm.assert_frame_equal(df.reset_index(), expected)
506500

501+
def test_reset_index_datetime2(self, tz_naive_fixture):
502+
tz = tz_naive_fixture
503+
idx1 = date_range("1/1/2011", periods=5, freq="D", tz=tz, name="idx1")
504+
idx2 = Index(range(5), name="idx2", dtype="int64")
507505
idx3 = date_range(
508506
"1/1/2012", periods=5, freq="MS", tz="Europe/Paris", name="idx3"
509507
)
@@ -515,54 +513,34 @@ def test_reset_index_datetime(self, tz_naive_fixture):
515513

516514
expected = DataFrame(
517515
{
518-
"idx1": [
519-
datetime(2011, 1, 1),
520-
datetime(2011, 1, 2),
521-
datetime(2011, 1, 3),
522-
datetime(2011, 1, 4),
523-
datetime(2011, 1, 5),
524-
],
516+
"idx1": idx1,
525517
"idx2": np.arange(5, dtype="int64"),
526-
"idx3": [
527-
datetime(2012, 1, 1),
528-
datetime(2012, 2, 1),
529-
datetime(2012, 3, 1),
530-
datetime(2012, 4, 1),
531-
datetime(2012, 5, 1),
532-
],
518+
"idx3": idx3,
533519
"a": np.arange(5, dtype="int64"),
534520
"b": ["A", "B", "C", "D", "E"],
535521
},
536522
columns=["idx1", "idx2", "idx3", "a", "b"],
537523
)
538-
expected["idx1"] = expected["idx1"].apply(lambda d: Timestamp(d, tz=tz))
539-
expected["idx3"] = expected["idx3"].apply(
540-
lambda d: Timestamp(d, tz="Europe/Paris")
541-
)
542-
tm.assert_frame_equal(df.reset_index(), expected)
524+
result = df.reset_index()
525+
tm.assert_frame_equal(result, expected)
543526

527+
def test_reset_index_datetime3(self, tz_naive_fixture):
544528
# GH#7793
545-
idx = MultiIndex.from_product(
546-
[["a", "b"], date_range("20130101", periods=3, tz=tz)]
547-
)
529+
tz = tz_naive_fixture
530+
dti = date_range("20130101", periods=3, tz=tz)
531+
idx = MultiIndex.from_product([["a", "b"], dti])
548532
df = DataFrame(
549533
np.arange(6, dtype="int64").reshape(6, 1), columns=["a"], index=idx
550534
)
551535

552536
expected = DataFrame(
553537
{
554538
"level_0": "a a a b b b".split(),
555-
"level_1": [
556-
datetime(2013, 1, 1),
557-
datetime(2013, 1, 2),
558-
datetime(2013, 1, 3),
559-
]
560-
* 2,
539+
"level_1": dti.append(dti),
561540
"a": np.arange(6, dtype="int64"),
562541
},
563542
columns=["level_0", "level_1", "a"],
564543
)
565-
expected["level_1"] = expected["level_1"].apply(lambda d: Timestamp(d, tz=tz))
566544
result = df.reset_index()
567545
tm.assert_frame_equal(result, expected)
568546

pandas/tests/frame/test_arithmetic.py

-14
Original file line numberDiff line numberDiff line change
@@ -1904,20 +1904,6 @@ def test_pow_with_realignment():
19041904
tm.assert_frame_equal(result, expected)
19051905

19061906

1907-
# TODO: move to tests.arithmetic and parametrize
1908-
def test_pow_nan_with_zero():
1909-
left = DataFrame({"A": [np.nan, np.nan, np.nan]})
1910-
right = DataFrame({"A": [0, 0, 0]})
1911-
1912-
expected = DataFrame({"A": [1.0, 1.0, 1.0]})
1913-
1914-
result = left**right
1915-
tm.assert_frame_equal(result, expected)
1916-
1917-
result = left["A"] ** right["A"]
1918-
tm.assert_series_equal(result, expected["A"])
1919-
1920-
19211907
def test_dataframe_series_extension_dtypes():
19221908
# https://github.com/pandas-dev/pandas/issues/34311
19231909
df = DataFrame(

0 commit comments

Comments
 (0)