Skip to content

Commit

Permalink
TST (string dtype): un-xfail string tests specific to object dtype (p…
Browse files Browse the repository at this point in the history
…andas-dev#59433)

Co-authored-by: Joris Van den Bossche <jorisvandenbossche@gmail.com>
  • Loading branch information
jbrockmendel and jorisvandenbossche authored Nov 4, 2024
1 parent 988a7c8 commit dbeeb1f
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 18 deletions.
8 changes: 2 additions & 6 deletions pandas/tests/copy_view/test_interp_fillna.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import numpy as np
import pytest

from pandas._config import using_string_dtype

from pandas.compat import HAS_PYARROW

from pandas import (
NA,
DataFrame,
Expand Down Expand Up @@ -114,18 +110,18 @@ def test_interp_fill_functions_inplace(func, dtype):
assert view._mgr._has_no_reference(0)


@pytest.mark.xfail(using_string_dtype(), reason="TODO(infer_string)")
def test_interpolate_cannot_with_object_dtype():
df = DataFrame({"a": ["a", np.nan, "c"], "b": 1})
df["a"] = df["a"].astype(object)

msg = "DataFrame cannot interpolate with object dtype"
with pytest.raises(TypeError, match=msg):
df.interpolate()


@pytest.mark.xfail(using_string_dtype() and HAS_PYARROW, reason="TODO(infer_string)")
def test_interpolate_object_convert_no_op():
df = DataFrame({"a": ["a", "b", "c"], "b": 1})
df["a"] = df["a"].astype(object)
arr_a = get_array(df, "a")

# Now CoW makes a copy, it should not!
Expand Down
3 changes: 1 addition & 2 deletions pandas/tests/copy_view/test_replace.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,10 +259,9 @@ def test_replace_empty_list():
assert not df2._mgr._has_no_reference(0)


@pytest.mark.xfail(using_string_dtype() and HAS_PYARROW, reason="TODO(infer_string)")
@pytest.mark.parametrize("value", ["d", None])
def test_replace_object_list_inplace(value):
df = DataFrame({"a": ["a", "b", "c"]})
df = DataFrame({"a": ["a", "b", "c"]}, dtype=object)
arr = get_array(df, "a")
df.replace(["c"], value, inplace=True)
assert np.shares_memory(arr, get_array(df, "a"))
Expand Down
28 changes: 18 additions & 10 deletions pandas/tests/test_algos.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import numpy as np
import pytest

from pandas._config import using_string_dtype

from pandas._libs import (
algos as libalgos,
hashtable as ht,
Expand Down Expand Up @@ -1684,20 +1682,25 @@ def test_unique_complex_numbers(self, array, expected):


class TestHashTable:
@pytest.mark.xfail(using_string_dtype(), reason="TODO(infer_string)", strict=False)
@pytest.mark.parametrize(
"htable, data",
[
(ht.PyObjectHashTable, [f"foo_{i}" for i in range(1000)]),
(ht.StringHashTable, [f"foo_{i}" for i in range(1000)]),
(
ht.PyObjectHashTable,
np.array([f"foo_{i}" for i in range(1000)], dtype=object),
),
(
ht.StringHashTable,
np.array([f"foo_{i}" for i in range(1000)], dtype=object),
),
(ht.Float64HashTable, np.arange(1000, dtype=np.float64)),
(ht.Int64HashTable, np.arange(1000, dtype=np.int64)),
(ht.UInt64HashTable, np.arange(1000, dtype=np.uint64)),
],
)
def test_hashtable_unique(self, htable, data, writable):
# output of maker has guaranteed unique elements
s = Series(data)
s = Series(data, dtype=data.dtype)
if htable == ht.Float64HashTable:
# add NaN for float column
s.loc[500] = np.nan
Expand All @@ -1724,20 +1727,25 @@ def test_hashtable_unique(self, htable, data, writable):
reconstr = result_unique[result_inverse]
tm.assert_numpy_array_equal(reconstr, s_duplicated.values)

@pytest.mark.xfail(using_string_dtype(), reason="TODO(infer_string)", strict=False)
@pytest.mark.parametrize(
"htable, data",
[
(ht.PyObjectHashTable, [f"foo_{i}" for i in range(1000)]),
(ht.StringHashTable, [f"foo_{i}" for i in range(1000)]),
(
ht.PyObjectHashTable,
np.array([f"foo_{i}" for i in range(1000)], dtype=object),
),
(
ht.StringHashTable,
np.array([f"foo_{i}" for i in range(1000)], dtype=object),
),
(ht.Float64HashTable, np.arange(1000, dtype=np.float64)),
(ht.Int64HashTable, np.arange(1000, dtype=np.int64)),
(ht.UInt64HashTable, np.arange(1000, dtype=np.uint64)),
],
)
def test_hashtable_factorize(self, htable, writable, data):
# output of maker has guaranteed unique elements
s = Series(data)
s = Series(data, dtype=data.dtype)
if htable == ht.Float64HashTable:
# add NaN for float column
s.loc[500] = np.nan
Expand Down

0 comments on commit dbeeb1f

Please sign in to comment.