Skip to content

Commit 514852c

Browse files
authored
TST: fix FIXMEs (#44151)
1 parent 8cead13 commit 514852c

File tree

10 files changed

+58
-71
lines changed

10 files changed

+58
-71
lines changed

pandas/core/dtypes/cast.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -978,7 +978,7 @@ def astype_dt64_to_dt64tz(
978978
stacklevel=level,
979979
)
980980

981-
# FIXME: GH#33401 this doesn't match DatetimeArray.astype, which
981+
# GH#33401 this doesn't match DatetimeArray.astype, which
982982
# goes through the `not via_utc` path
983983
return values.tz_localize("UTC").tz_convert(dtype.tz)
984984

pandas/core/indexes/category.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ def fillna(self, value, downcast=None):
384384
cat = self._data.fillna(value)
385385
except (ValueError, TypeError):
386386
# invalid fill_value
387-
if not self.isna().any():
387+
if not self.hasnans:
388388
# nothing to fill, we can get away without casting
389389
return self.copy()
390390
return self.astype(object).fillna(value, downcast=downcast)

pandas/core/tools/timedeltas.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def to_timedelta(arg, unit=None, errors="raise"):
145145

146146
def _coerce_scalar_to_timedelta_type(r, unit="ns", errors="raise"):
147147
"""Convert string 'r' to a timedelta object."""
148-
result: Timedelta | NaTType # TODO: alias?
148+
result: Timedelta | NaTType
149149

150150
try:
151151
result = Timedelta(r, unit)

pandas/tests/arrays/boolean/test_logical.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,8 @@ def test_empty_ok(self, all_logical_operators):
3838
result = getattr(a, op_name)(False)
3939
tm.assert_extension_array_equal(a, result)
4040

41-
# FIXME: dont leave commented-out
42-
# TODO: pd.NA
43-
# result = getattr(a, op_name)(pd.NA)
44-
# tm.assert_extension_array_equal(a, result)
41+
result = getattr(a, op_name)(pd.NA)
42+
tm.assert_extension_array_equal(a, result)
4543

4644
def test_logical_length_mismatch_raises(self, all_logical_operators):
4745
op_name = all_logical_operators

pandas/tests/extension/base/casting.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import numpy as np
22
import pytest
33

4+
from pandas.compat import np_version_under1p20
45
import pandas.util._test_decorators as td
56

67
import pandas as pd
@@ -30,10 +31,12 @@ def test_astype_object_frame(self, all_data):
3031
assert isinstance(result._mgr.arrays[0], np.ndarray)
3132
assert result._mgr.arrays[0].dtype == np.dtype(object)
3233

33-
# FIXME: these currently fail; dont leave commented-out
34-
# check that we can compare the dtypes
35-
# cmp = result.dtypes.equals(df.dtypes)
36-
# assert not cmp.any()
34+
# earlier numpy raises TypeError on e.g. np.dtype(np.int64) == "Int64"
35+
# instead of returning False
36+
if not np_version_under1p20:
37+
# check that we can compare the dtypes
38+
comp = result.dtypes == df.dtypes
39+
assert not comp.any()
3740

3841
def test_tolist(self, data):
3942
result = pd.Series(data).tolist()

pandas/tests/extension/test_sparse.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import numpy as np
1818
import pytest
1919

20+
from pandas.compat import np_version_under1p20
2021
from pandas.errors import PerformanceWarning
2122

2223
from pandas.core.dtypes.common import is_object_dtype
@@ -374,10 +375,12 @@ def test_astype_object_frame(self, all_data):
374375
result = df.astype(object)
375376
assert is_object_dtype(result._mgr.arrays[0].dtype)
376377

377-
# FIXME: these currently fail; dont leave commented-out
378-
# check that we can compare the dtypes
379-
# comp = result.dtypes.equals(df.dtypes)
380-
# assert not comp.any()
378+
# earlier numpy raises TypeError on e.g. np.dtype(np.int64) == "Int64"
379+
# instead of returning False
380+
if not np_version_under1p20:
381+
# check that we can compare the dtypes
382+
comp = result.dtypes == df.dtypes
383+
assert not comp.any()
381384

382385
def test_astype_str(self, data):
383386
result = pd.Series(data[:5]).astype(str)

pandas/tests/frame/indexing/test_indexing.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -576,13 +576,11 @@ def test_ix_multi_take(self):
576576
xp = df.reindex([0])
577577
tm.assert_frame_equal(rs, xp)
578578

579-
# FIXME: dont leave commented-out
580-
""" #1321
579+
# GH#1321
581580
df = DataFrame(np.random.randn(3, 2))
582-
rs = df.loc[df.index==0, df.columns==1]
583-
xp = df.reindex([0], [1])
581+
rs = df.loc[df.index == 0, df.columns == 1]
582+
xp = df.reindex(index=[0], columns=[1])
584583
tm.assert_frame_equal(rs, xp)
585-
"""
586584

587585
def test_getitem_fancy_scalar(self, float_frame):
588586
f = float_frame

pandas/tests/generic/test_frame.py

Lines changed: 22 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -87,18 +87,9 @@ def test_metadata_propagation_indiv_resample(self):
8787
result = df.resample("1T")
8888
self.check_metadata(df, result)
8989

90-
def test_metadata_propagation_indiv(self):
90+
def test_metadata_propagation_indiv(self, monkeypatch):
9191
# merging with override
9292
# GH 6923
93-
_metadata = DataFrame._metadata
94-
_finalize = DataFrame.__finalize__
95-
96-
np.random.seed(10)
97-
df1 = DataFrame(np.random.randint(0, 4, (3, 2)), columns=["a", "b"])
98-
df2 = DataFrame(np.random.randint(0, 4, (3, 2)), columns=["c", "d"])
99-
DataFrame._metadata = ["filename"]
100-
df1.filename = "fname1.csv"
101-
df2.filename = "fname2.csv"
10293

10394
def finalize(self, other, method=None, **kwargs):
10495

@@ -107,41 +98,37 @@ def finalize(self, other, method=None, **kwargs):
10798
left, right = other.left, other.right
10899
value = getattr(left, name, "") + "|" + getattr(right, name, "")
109100
object.__setattr__(self, name, value)
110-
else:
111-
object.__setattr__(self, name, getattr(other, name, ""))
112-
113-
return self
114-
115-
DataFrame.__finalize__ = finalize
116-
result = df1.merge(df2, left_on=["a"], right_on=["c"], how="inner")
117-
assert result.filename == "fname1.csv|fname2.csv"
118-
119-
# concat
120-
# GH 6927
121-
DataFrame._metadata = ["filename"]
122-
df1 = DataFrame(np.random.randint(0, 4, (3, 2)), columns=list("ab"))
123-
df1.filename = "foo"
124-
125-
def finalize(self, other, method=None, **kwargs):
126-
for name in self._metadata:
127-
if method == "concat":
101+
elif method == "concat":
128102
value = "+".join(
129103
[getattr(o, name) for o in other.objs if getattr(o, name, None)]
130104
)
131105
object.__setattr__(self, name, value)
132106
else:
133-
object.__setattr__(self, name, getattr(other, name, None))
107+
object.__setattr__(self, name, getattr(other, name, ""))
134108

135109
return self
136110

137-
DataFrame.__finalize__ = finalize
111+
with monkeypatch.context() as m:
112+
m.setattr(DataFrame, "_metadata", ["filename"])
113+
m.setattr(DataFrame, "__finalize__", finalize)
114+
115+
np.random.seed(10)
116+
df1 = DataFrame(np.random.randint(0, 4, (3, 2)), columns=["a", "b"])
117+
df2 = DataFrame(np.random.randint(0, 4, (3, 2)), columns=["c", "d"])
118+
DataFrame._metadata = ["filename"]
119+
df1.filename = "fname1.csv"
120+
df2.filename = "fname2.csv"
121+
122+
result = df1.merge(df2, left_on=["a"], right_on=["c"], how="inner")
123+
assert result.filename == "fname1.csv|fname2.csv"
138124

139-
result = pd.concat([df1, df1])
140-
assert result.filename == "foo+foo"
125+
# concat
126+
# GH#6927
127+
df1 = DataFrame(np.random.randint(0, 4, (3, 2)), columns=list("ab"))
128+
df1.filename = "foo"
141129

142-
# reset
143-
DataFrame._metadata = _metadata
144-
DataFrame.__finalize__ = _finalize # FIXME: use monkeypatch
130+
result = pd.concat([df1, df1])
131+
assert result.filename == "foo+foo"
145132

146133
def test_set_attribute(self):
147134
# Test for consistent setattr behavior when an attribute and a column

pandas/tests/generic/test_series.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def test_metadata_propagation_indiv_resample(self):
109109
result = ts.resample("1T").apply(lambda x: x.sum())
110110
self.check_metadata(ts, result)
111111

112-
def test_metadata_propagation_indiv(self):
112+
def test_metadata_propagation_indiv(self, monkeypatch):
113113
# check that the metadata matches up on the resulting ops
114114

115115
ser = Series(range(3), range(3))
@@ -120,12 +120,6 @@ def test_metadata_propagation_indiv(self):
120120
result = ser.T
121121
self.check_metadata(ser, result)
122122

123-
_metadata = Series._metadata
124-
_finalize = Series.__finalize__
125-
Series._metadata = ["name", "filename"]
126-
ser.filename = "foo"
127-
ser2.filename = "bar"
128-
129123
def finalize(self, other, method=None, **kwargs):
130124
for name in self._metadata:
131125
if method == "concat" and name == "filename":
@@ -142,12 +136,13 @@ def finalize(self, other, method=None, **kwargs):
142136

143137
return self
144138

145-
Series.__finalize__ = finalize
139+
with monkeypatch.context() as m:
140+
m.setattr(Series, "_metadata", ["name", "filename"])
141+
m.setattr(Series, "__finalize__", finalize)
146142

147-
result = pd.concat([ser, ser2])
148-
assert result.filename == "foo+bar"
149-
assert result.name is None
143+
ser.filename = "foo"
144+
ser2.filename = "bar"
150145

151-
# reset
152-
Series._metadata = _metadata
153-
Series.__finalize__ = _finalize # FIXME: use monkeypatch
146+
result = pd.concat([ser, ser2])
147+
assert result.filename == "foo+bar"
148+
assert result.name is None

pandas/tests/indexes/timedeltas/methods/test_insert.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,17 @@ def test_insert_nat(self, null):
8787
def test_insert_invalid_na(self):
8888
idx = TimedeltaIndex(["4day", "1day", "2day"], name="idx")
8989

90-
# FIXME: assert_index_equal fails if we pass a different
91-
# instance of np.datetime64("NaT")
9290
item = np.datetime64("NaT")
9391
result = idx.insert(0, item)
9492

9593
expected = Index([item] + list(idx), dtype=object, name="idx")
9694
tm.assert_index_equal(result, expected)
9795

96+
# Also works if we pass a different dt64nat object
97+
item2 = np.datetime64("NaT")
98+
result = idx.insert(0, item2)
99+
tm.assert_index_equal(result, expected)
100+
98101
@pytest.mark.parametrize(
99102
"item", [0, np.int64(0), np.float64(0), np.array(0), np.datetime64(456, "us")]
100103
)

0 commit comments

Comments
 (0)