Skip to content

Commit f3f0249

Browse files
authored
TST: specify dt64 units (#56217)
* TST: specify dt64 units * specify dt64 unit
1 parent 2b7af84 commit f3f0249

File tree

12 files changed

+132
-111
lines changed

12 files changed

+132
-111
lines changed

pandas/tests/frame/test_reductions.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,7 @@ def test_std_timedelta64_skipna_false(self):
798798
"values", [["2022-01-01", "2022-01-02", pd.NaT, "2022-01-03"], 4 * [pd.NaT]]
799799
)
800800
def test_std_datetime64_with_nat(
801-
self, values, skipna, using_array_manager, request
801+
self, values, skipna, using_array_manager, request, unit
802802
):
803803
# GH#51335
804804
if using_array_manager and (
@@ -808,13 +808,14 @@ def test_std_datetime64_with_nat(
808808
reason="GH#51446: Incorrect type inference on NaT in reduction result"
809809
)
810810
request.applymarker(mark)
811-
df = DataFrame({"a": to_datetime(values)})
811+
dti = to_datetime(values).as_unit(unit)
812+
df = DataFrame({"a": dti})
812813
result = df.std(skipna=skipna)
813814
if not skipna or all(value is pd.NaT for value in values):
814-
expected = Series({"a": pd.NaT}, dtype="timedelta64[ns]")
815+
expected = Series({"a": pd.NaT}, dtype=f"timedelta64[{unit}]")
815816
else:
816817
# 86400000000000ns == 1 day
817-
expected = Series({"a": 86400000000000}, dtype="timedelta64[ns]")
818+
expected = Series({"a": 86400000000000}, dtype=f"timedelta64[{unit}]")
818819
tm.assert_series_equal(result, expected)
819820

820821
def test_sum_corner(self):

pandas/tests/groupby/test_timegrouper.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,9 @@ def test_groupby_groups_datetimeindex2(self):
537537
for date in dates:
538538
result = grouped.get_group(date)
539539
data = [[df.loc[date, "A"], df.loc[date, "B"]]]
540-
expected_index = DatetimeIndex([date], name="date", freq="D")
540+
expected_index = DatetimeIndex(
541+
[date], name="date", freq="D", dtype=index.dtype
542+
)
541543
expected = DataFrame(data, columns=list("AB"), index=expected_index)
542544
tm.assert_frame_equal(result, expected)
543545

pandas/tests/indexes/datetimes/methods/test_round.py

+17-14
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ def test_round_invalid(self, freq, error_msg):
4040
with pytest.raises(ValueError, match=error_msg):
4141
dti.round(freq)
4242

43-
def test_round(self, tz_naive_fixture):
43+
def test_round(self, tz_naive_fixture, unit):
4444
tz = tz_naive_fixture
45-
rng = date_range(start="2016-01-01", periods=5, freq="30Min", tz=tz)
45+
rng = date_range(start="2016-01-01", periods=5, freq="30Min", tz=tz, unit=unit)
4646
elt = rng[1]
4747

4848
expected_rng = DatetimeIndex(
@@ -53,10 +53,11 @@ def test_round(self, tz_naive_fixture):
5353
Timestamp("2016-01-01 02:00:00", tz=tz),
5454
Timestamp("2016-01-01 02:00:00", tz=tz),
5555
]
56-
)
56+
).as_unit(unit)
5757
expected_elt = expected_rng[1]
5858

59-
tm.assert_index_equal(rng.round(freq="h"), expected_rng)
59+
result = rng.round(freq="h")
60+
tm.assert_index_equal(result, expected_rng)
6061
assert elt.round(freq="h") == expected_elt
6162

6263
msg = INVALID_FREQ_ERR_MSG
@@ -74,30 +75,31 @@ def test_round(self, tz_naive_fixture):
7475
def test_round2(self, tz_naive_fixture):
7576
tz = tz_naive_fixture
7677
# GH#14440 & GH#15578
77-
index = DatetimeIndex(["2016-10-17 12:00:00.0015"], tz=tz)
78+
index = DatetimeIndex(["2016-10-17 12:00:00.0015"], tz=tz).as_unit("ns")
7879
result = index.round("ms")
79-
expected = DatetimeIndex(["2016-10-17 12:00:00.002000"], tz=tz)
80+
expected = DatetimeIndex(["2016-10-17 12:00:00.002000"], tz=tz).as_unit("ns")
8081
tm.assert_index_equal(result, expected)
8182

8283
for freq in ["us", "ns"]:
8384
tm.assert_index_equal(index, index.round(freq))
8485

8586
def test_round3(self, tz_naive_fixture):
8687
tz = tz_naive_fixture
87-
index = DatetimeIndex(["2016-10-17 12:00:00.00149"], tz=tz)
88+
index = DatetimeIndex(["2016-10-17 12:00:00.00149"], tz=tz).as_unit("ns")
8889
result = index.round("ms")
89-
expected = DatetimeIndex(["2016-10-17 12:00:00.001000"], tz=tz)
90+
expected = DatetimeIndex(["2016-10-17 12:00:00.001000"], tz=tz).as_unit("ns")
9091
tm.assert_index_equal(result, expected)
9192

9293
def test_round4(self, tz_naive_fixture):
93-
index = DatetimeIndex(["2016-10-17 12:00:00.001501031"])
94+
index = DatetimeIndex(["2016-10-17 12:00:00.001501031"], dtype="M8[ns]")
9495
result = index.round("10ns")
95-
expected = DatetimeIndex(["2016-10-17 12:00:00.001501030"])
96+
expected = DatetimeIndex(["2016-10-17 12:00:00.001501030"], dtype="M8[ns]")
9697
tm.assert_index_equal(result, expected)
9798

99+
ts = "2016-10-17 12:00:00.001501031"
100+
dti = DatetimeIndex([ts], dtype="M8[ns]")
98101
with tm.assert_produces_warning(False):
99-
ts = "2016-10-17 12:00:00.001501031"
100-
DatetimeIndex([ts]).round("1010ns")
102+
dti.round("1010ns")
101103

102104
def test_no_rounding_occurs(self, tz_naive_fixture):
103105
# GH 21262
@@ -112,9 +114,10 @@ def test_no_rounding_occurs(self, tz_naive_fixture):
112114
Timestamp("2016-01-01 00:06:00", tz=tz),
113115
Timestamp("2016-01-01 00:08:00", tz=tz),
114116
]
115-
)
117+
).as_unit("ns")
116118

117-
tm.assert_index_equal(rng.round(freq="2min"), expected_rng)
119+
result = rng.round(freq="2min")
120+
tm.assert_index_equal(result, expected_rng)
118121

119122
@pytest.mark.parametrize(
120123
"test_input, rounder, freq, expected",

pandas/tests/indexes/datetimes/test_constructors.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -707,10 +707,14 @@ def test_constructor_dtype(self):
707707
idx = DatetimeIndex(
708708
["2013-01-01", "2013-01-02"], dtype="datetime64[ns, US/Eastern]"
709709
)
710-
expected = DatetimeIndex(["2013-01-01", "2013-01-02"]).tz_localize("US/Eastern")
710+
expected = (
711+
DatetimeIndex(["2013-01-01", "2013-01-02"])
712+
.as_unit("ns")
713+
.tz_localize("US/Eastern")
714+
)
711715
tm.assert_index_equal(idx, expected)
712716

713-
idx = DatetimeIndex(["2013-01-01", "2013-01-02"], tz="US/Eastern")
717+
idx = DatetimeIndex(["2013-01-01", "2013-01-02"], tz="US/Eastern").as_unit("ns")
714718
tm.assert_index_equal(idx, expected)
715719

716720
def test_constructor_dtype_tz_mismatch_raises(self):
@@ -774,7 +778,7 @@ def test_constructor_start_end_with_tz(self, tz):
774778
result = date_range(freq="D", start=start, end=end, tz=tz)
775779
expected = DatetimeIndex(
776780
["2013-01-01 06:00:00", "2013-01-02 06:00:00"],
777-
tz="America/Los_Angeles",
781+
dtype="M8[ns, America/Los_Angeles]",
778782
freq="D",
779783
)
780784
tm.assert_index_equal(result, expected)

pandas/tests/indexes/datetimes/test_indexing.py

+42-46
Original file line numberDiff line numberDiff line change
@@ -226,58 +226,54 @@ def test_take_nan_first_datetime(self):
226226
expected = DatetimeIndex([index[-1], index[0], index[1]])
227227
tm.assert_index_equal(result, expected)
228228

229-
def test_take(self):
229+
@pytest.mark.parametrize("tz", [None, "Asia/Tokyo"])
230+
def test_take(self, tz):
230231
# GH#10295
231-
idx1 = date_range("2011-01-01", "2011-01-31", freq="D", name="idx")
232-
idx2 = date_range(
233-
"2011-01-01", "2011-01-31", freq="D", tz="Asia/Tokyo", name="idx"
232+
idx = date_range("2011-01-01", "2011-01-31", freq="D", name="idx", tz=tz)
233+
234+
result = idx.take([0])
235+
assert result == Timestamp("2011-01-01", tz=idx.tz)
236+
237+
result = idx.take([0, 1, 2])
238+
expected = date_range(
239+
"2011-01-01", "2011-01-03", freq="D", tz=idx.tz, name="idx"
234240
)
241+
tm.assert_index_equal(result, expected)
242+
assert result.freq == expected.freq
235243

236-
for idx in [idx1, idx2]:
237-
result = idx.take([0])
238-
assert result == Timestamp("2011-01-01", tz=idx.tz)
244+
result = idx.take([0, 2, 4])
245+
expected = date_range(
246+
"2011-01-01", "2011-01-05", freq="2D", tz=idx.tz, name="idx"
247+
)
248+
tm.assert_index_equal(result, expected)
249+
assert result.freq == expected.freq
239250

240-
result = idx.take([0, 1, 2])
241-
expected = date_range(
242-
"2011-01-01", "2011-01-03", freq="D", tz=idx.tz, name="idx"
243-
)
244-
tm.assert_index_equal(result, expected)
245-
assert result.freq == expected.freq
251+
result = idx.take([7, 4, 1])
252+
expected = date_range(
253+
"2011-01-08", "2011-01-02", freq="-3D", tz=idx.tz, name="idx"
254+
)
255+
tm.assert_index_equal(result, expected)
256+
assert result.freq == expected.freq
246257

247-
result = idx.take([0, 2, 4])
248-
expected = date_range(
249-
"2011-01-01", "2011-01-05", freq="2D", tz=idx.tz, name="idx"
250-
)
251-
tm.assert_index_equal(result, expected)
252-
assert result.freq == expected.freq
258+
result = idx.take([3, 2, 5])
259+
expected = DatetimeIndex(
260+
["2011-01-04", "2011-01-03", "2011-01-06"],
261+
dtype=idx.dtype,
262+
freq=None,
263+
name="idx",
264+
)
265+
tm.assert_index_equal(result, expected)
266+
assert result.freq is None
253267

254-
result = idx.take([7, 4, 1])
255-
expected = date_range(
256-
"2011-01-08", "2011-01-02", freq="-3D", tz=idx.tz, name="idx"
257-
)
258-
tm.assert_index_equal(result, expected)
259-
assert result.freq == expected.freq
260-
261-
result = idx.take([3, 2, 5])
262-
expected = DatetimeIndex(
263-
["2011-01-04", "2011-01-03", "2011-01-06"],
264-
dtype=idx.dtype,
265-
freq=None,
266-
name="idx",
267-
)
268-
tm.assert_index_equal(result, expected)
269-
assert result.freq is None
270-
271-
result = idx.take([-3, 2, 5])
272-
expected = DatetimeIndex(
273-
["2011-01-29", "2011-01-03", "2011-01-06"],
274-
dtype=idx.dtype,
275-
freq=None,
276-
tz=idx.tz,
277-
name="idx",
278-
)
279-
tm.assert_index_equal(result, expected)
280-
assert result.freq is None
268+
result = idx.take([-3, 2, 5])
269+
expected = DatetimeIndex(
270+
["2011-01-29", "2011-01-03", "2011-01-06"],
271+
dtype=idx.dtype,
272+
freq=None,
273+
name="idx",
274+
)
275+
tm.assert_index_equal(result, expected)
276+
assert result.freq is None
281277

282278
def test_take_invalid_kwargs(self):
283279
idx = date_range("2011-01-01", "2011-01-31", freq="D", name="idx")

pandas/tests/indexing/test_coercion.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -256,13 +256,13 @@ def test_insert_float_index(
256256
def test_insert_index_datetimes(self, fill_val, exp_dtype, insert_value):
257257
obj = pd.DatetimeIndex(
258258
["2011-01-01", "2011-01-02", "2011-01-03", "2011-01-04"], tz=fill_val.tz
259-
)
259+
).as_unit("ns")
260260
assert obj.dtype == exp_dtype
261261

262262
exp = pd.DatetimeIndex(
263263
["2011-01-01", fill_val.date(), "2011-01-02", "2011-01-03", "2011-01-04"],
264264
tz=fill_val.tz,
265-
)
265+
).as_unit("ns")
266266
self._assert_insert_conversion(obj, fill_val, exp, exp_dtype)
267267

268268
if fill_val.tz:

pandas/tests/indexing/test_datetime.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ def test_indexing_fast_xs(self):
5757
df = DataFrame({"a": date_range("2014-01-01", periods=10, tz="UTC")})
5858
result = df.iloc[5]
5959
expected = Series(
60-
[Timestamp("2014-01-06 00:00:00+0000", tz="UTC")], index=["a"], name=5
60+
[Timestamp("2014-01-06 00:00:00+0000", tz="UTC")],
61+
index=["a"],
62+
name=5,
63+
dtype="M8[ns, UTC]",
6164
)
6265
tm.assert_series_equal(result, expected)
6366

pandas/tests/reshape/concat/test_datetimes.py

+19-19
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,14 @@ def test_concat_datetime_timezone(self):
5252
df2 = DataFrame({"b": [1, 2, 3]}, index=idx2)
5353
result = concat([df1, df2], axis=1)
5454

55-
exp_idx = (
56-
DatetimeIndex(
57-
[
58-
"2011-01-01 00:00:00+01:00",
59-
"2011-01-01 01:00:00+01:00",
60-
"2011-01-01 02:00:00+01:00",
61-
],
62-
freq="h",
63-
)
64-
.tz_convert("UTC")
65-
.tz_convert("Europe/Paris")
66-
.as_unit("ns")
55+
exp_idx = DatetimeIndex(
56+
[
57+
"2011-01-01 00:00:00+01:00",
58+
"2011-01-01 01:00:00+01:00",
59+
"2011-01-01 02:00:00+01:00",
60+
],
61+
dtype="M8[ns, Europe/Paris]",
62+
freq="h",
6763
)
6864

6965
expected = DataFrame(
@@ -431,21 +427,25 @@ def test_concat_multiindex_with_tz(self):
431427
# GH 6606
432428
df = DataFrame(
433429
{
434-
"dt": [
435-
datetime(2014, 1, 1),
436-
datetime(2014, 1, 2),
437-
datetime(2014, 1, 3),
438-
],
430+
"dt": DatetimeIndex(
431+
[
432+
datetime(2014, 1, 1),
433+
datetime(2014, 1, 2),
434+
datetime(2014, 1, 3),
435+
],
436+
dtype="M8[ns, US/Pacific]",
437+
),
439438
"b": ["A", "B", "C"],
440439
"c": [1, 2, 3],
441440
"d": [4, 5, 6],
442441
}
443442
)
444-
df["dt"] = df["dt"].apply(lambda d: Timestamp(d, tz="US/Pacific"))
445443
df = df.set_index(["dt", "b"])
446444

447445
exp_idx1 = DatetimeIndex(
448-
["2014-01-01", "2014-01-02", "2014-01-03"] * 2, tz="US/Pacific", name="dt"
446+
["2014-01-01", "2014-01-02", "2014-01-03"] * 2,
447+
dtype="M8[ns, US/Pacific]",
448+
name="dt",
449449
)
450450
exp_idx2 = Index(["A", "B", "C"] * 2, name="b")
451451
exp_idx = MultiIndex.from_arrays([exp_idx1, exp_idx2])

pandas/tests/series/indexing/test_setitem.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ def test_setitem_with_tz_dst(self, indexer_sli):
126126
Timestamp("2016-11-06 00:00-04:00", tz=tz),
127127
Timestamp("2011-01-01 00:00-05:00", tz=tz),
128128
Timestamp("2016-11-06 01:00-05:00", tz=tz),
129-
]
129+
],
130+
dtype=orig.dtype,
130131
)
131132

132133
# scalar
@@ -138,6 +139,7 @@ def test_setitem_with_tz_dst(self, indexer_sli):
138139
vals = Series(
139140
[Timestamp("2011-01-01", tz=tz), Timestamp("2012-01-01", tz=tz)],
140141
index=[1, 2],
142+
dtype=orig.dtype,
141143
)
142144
assert vals.dtype == f"datetime64[ns, {tz}]"
143145

@@ -146,7 +148,8 @@ def test_setitem_with_tz_dst(self, indexer_sli):
146148
Timestamp("2016-11-06 00:00", tz=tz),
147149
Timestamp("2011-01-01 00:00", tz=tz),
148150
Timestamp("2012-01-01 00:00", tz=tz),
149-
]
151+
],
152+
dtype=orig.dtype,
150153
)
151154

152155
ser = orig.copy()

pandas/tests/series/test_constructors.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -1154,24 +1154,24 @@ def test_constructor_with_datetime_tz5(self):
11541154

11551155
def test_constructor_with_datetime_tz4(self):
11561156
# inference
1157-
s = Series(
1157+
ser = Series(
11581158
[
11591159
Timestamp("2013-01-01 13:00:00-0800", tz="US/Pacific"),
11601160
Timestamp("2013-01-02 14:00:00-0800", tz="US/Pacific"),
11611161
]
11621162
)
1163-
assert s.dtype == "datetime64[ns, US/Pacific]"
1164-
assert lib.infer_dtype(s, skipna=True) == "datetime64"
1163+
assert ser.dtype == "datetime64[ns, US/Pacific]"
1164+
assert lib.infer_dtype(ser, skipna=True) == "datetime64"
11651165

11661166
def test_constructor_with_datetime_tz3(self):
1167-
s = Series(
1167+
ser = Series(
11681168
[
11691169
Timestamp("2013-01-01 13:00:00-0800", tz="US/Pacific"),
11701170
Timestamp("2013-01-02 14:00:00-0800", tz="US/Eastern"),
11711171
]
11721172
)
1173-
assert s.dtype == "object"
1174-
assert lib.infer_dtype(s, skipna=True) == "datetime"
1173+
assert ser.dtype == "object"
1174+
assert lib.infer_dtype(ser, skipna=True) == "datetime"
11751175

11761176
def test_constructor_with_datetime_tz2(self):
11771177
# with all NaT
@@ -1587,7 +1587,7 @@ def test_NaT_scalar(self):
15871587
def test_NaT_cast(self):
15881588
# GH10747
15891589
result = Series([np.nan]).astype("M8[ns]")
1590-
expected = Series([NaT])
1590+
expected = Series([NaT], dtype="M8[ns]")
15911591
tm.assert_series_equal(result, expected)
15921592

15931593
def test_constructor_name_hashable(self):

0 commit comments

Comments
 (0)