Skip to content

[backport 2.3.x] TST(string dtype): Fix xfails in test_block_internals.py (#60765) #60781

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pandas/tests/frame/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def float_string_frame():
df = DataFrame(
np.random.default_rng(2).standard_normal((30, 4)),
index=Index([f"foo_{i}" for i in range(30)], dtype=object),
columns=Index(list("ABCD"), dtype=object),
columns=Index(list("ABCD")),
)
df["foo"] = "bar"
return df
Expand Down
1 change: 0 additions & 1 deletion pandas/tests/frame/constructors/test_from_dict.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@ def test_constructor_list_of_series(self):
expected = DataFrame.from_dict(sdict, orient="index")
tm.assert_frame_equal(result, expected)

@pytest.mark.xfail(using_string_dtype(), reason="columns inferring logic broken")
def test_constructor_orient(self, float_string_frame):
data_dict = float_string_frame.T._series
recons = DataFrame.from_dict(data_dict, orient="index")
Expand Down
35 changes: 10 additions & 25 deletions pandas/tests/frame/test_block_internals.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
import numpy as np
import pytest

from pandas._config import using_string_dtype

from pandas.errors import PerformanceWarning
import pandas.util._test_decorators as td

Expand Down Expand Up @@ -185,21 +183,7 @@ def test_constructor_with_convert(self):
)
tm.assert_series_equal(result, expected)

@pytest.mark.xfail(using_string_dtype(), reason="TODO(infer_string)")
def test_construction_with_mixed(self, float_string_frame, using_infer_string):
# test construction edge cases with mixed types

# f7u12, this does not work without extensive workaround
data = [
[datetime(2001, 1, 5), np.nan, datetime(2001, 1, 2)],
[datetime(2000, 1, 2), datetime(2000, 1, 3), datetime(2000, 1, 1)],
]
df = DataFrame(data)

# check dtypes
result = df.dtypes
expected = Series({"datetime64[us]": 3})

# mixed-type frames
float_string_frame["datetime"] = datetime.now()
float_string_frame["timedelta"] = timedelta(days=1, seconds=1)
Expand All @@ -219,13 +203,11 @@ def test_construction_with_mixed(self, float_string_frame, using_infer_string):
)
tm.assert_series_equal(result, expected)

@pytest.mark.xfail(using_string_dtype(), reason="TODO(infer_string)")
def test_construction_with_conversions(self):
# convert from a numpy array of non-ns timedelta64; as of 2.0 this does
# *not* convert
arr = np.array([1, 2, 3], dtype="timedelta64[s]")
df = DataFrame(index=range(3))
df["A"] = arr
df = DataFrame({"A": arr})
expected = DataFrame(
{"A": pd.timedelta_range("00:00:01", periods=3, freq="s")}, index=range(3)
)
Expand All @@ -243,11 +225,11 @@ def test_construction_with_conversions(self):
assert expected.dtypes["dt1"] == "M8[s]"
assert expected.dtypes["dt2"] == "M8[s]"

df = DataFrame(index=range(3))
df["dt1"] = np.datetime64("2013-01-01")
df["dt2"] = np.array(
dt1 = np.datetime64("2013-01-01")
dt2 = np.array(
["2013-01-01", "2013-01-02", "2013-01-03"], dtype="datetime64[D]"
)
df = DataFrame({"dt1": dt1, "dt2": dt2})

# df['dt3'] = np.array(['2013-01-01 00:00:01','2013-01-01
# 00:00:02','2013-01-01 00:00:03'],dtype='datetime64[s]')
Expand Down Expand Up @@ -440,14 +422,17 @@ def test_update_inplace_sets_valid_block_values(using_copy_on_write):
assert df.isnull().sum().sum() == 0


@pytest.mark.xfail(using_string_dtype(), reason="TODO(infer_string)")
def test_nonconsolidated_item_cache_take():
# https://github.com/pandas-dev/pandas/issues/35521

# create non-consolidated dataframe with object dtype columns
df = DataFrame()
df["col1"] = Series(["a"], dtype=object)
df = DataFrame(
{
"col1": Series(["a"], dtype=object),
}
)
df["col2"] = Series([0], dtype=object)
assert not df._mgr.is_consolidated()

# access column (item cache)
df["col1"] == "A"
Expand Down
Loading