Skip to content

Commit

Permalink
Remove conftest in indexing
Browse files Browse the repository at this point in the history
  • Loading branch information
mroeschke committed Dec 23, 2023
1 parent 157631d commit 9f9a643
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 212 deletions.
127 changes: 0 additions & 127 deletions pandas/tests/indexing/conftest.py

This file was deleted.

15 changes: 10 additions & 5 deletions pandas/tests/indexing/test_iloc.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,18 @@

class TestiLoc:
@pytest.mark.parametrize("key", [2, -1, [0, 1, 2]])
@pytest.mark.parametrize("kind", ["series", "frame"])
@pytest.mark.parametrize(
"col",
["labels", "mixed", "ts", "floats", "empty"],
"index",
[
Index(list("abcd"), dtype=object),
Index([2, 4, "null", 8], dtype=object),
date_range("20130101", periods=4),
Index(range(0, 8, 2), dtype=np.float64),
Index([]),
],
)
def test_iloc_getitem_int_and_list_int(self, key, kind, col, request):
obj = request.getfixturevalue(f"{kind}_{col}")
def test_iloc_getitem_int_and_list_int(self, key, frame_or_series, index, request):
obj = frame_or_series(range(len(index)), index=index)
check_indexing_smoketest_or_raises(
obj,
"iloc",
Expand Down
131 changes: 63 additions & 68 deletions pandas/tests/indexing/test_loc.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,116 +69,111 @@ def test_none_values_on_string_columns(self):

assert df.loc[2, "a"] is None

@pytest.mark.parametrize("kind", ["series", "frame"])
def test_loc_getitem_int(self, kind, request):
def test_loc_getitem_int(self, frame_or_series):
# int label
obj = request.getfixturevalue(f"{kind}_labels")
obj = frame_or_series(range(3), index=Index(list("abc"), dtype=object))
check_indexing_smoketest_or_raises(obj, "loc", 2, fails=KeyError)

@pytest.mark.parametrize("kind", ["series", "frame"])
def test_loc_getitem_label(self, kind, request):
def test_loc_getitem_label(self, frame_or_series):
# label
obj = request.getfixturevalue(f"{kind}_empty")
obj = frame_or_series()
check_indexing_smoketest_or_raises(obj, "loc", "c", fails=KeyError)

@pytest.mark.parametrize("key", ["f", 20])
@pytest.mark.parametrize(
"key, typs, axes",
"index",
[
["f", ["ints", "uints", "labels", "mixed", "ts"], None],
["f", ["floats"], None],
[20, ["ints", "uints", "mixed"], None],
[20, ["labels"], None],
[20, ["ts"], 0],
[20, ["floats"], 0],
Index(list("abcd"), dtype=object),
Index([2, 4, "null", 8], dtype=object),
date_range("20130101", periods=4),
Index(range(0, 8, 2), dtype=np.float64),
Index([]),
],
)
@pytest.mark.parametrize("kind", ["series", "frame"])
def test_loc_getitem_label_out_of_range(self, key, typs, axes, kind, request):
for typ in typs:
obj = request.getfixturevalue(f"{kind}_{typ}")
# out of range label
check_indexing_smoketest_or_raises(
obj, "loc", key, axes=axes, fails=KeyError
)
def test_loc_getitem_label_out_of_range(self, key, index, frame_or_series):
obj = frame_or_series(range(len(index)), index=index)
# out of range label
check_indexing_smoketest_or_raises(obj, "loc", key, fails=KeyError)

@pytest.mark.parametrize("key", [[0, 1, 2], [1, 3.0, "A"]])
@pytest.mark.parametrize("dtype", [np.int64, np.uint64, np.float64])
def test_loc_getitem_label_list(self, key, dtype, frame_or_series):
obj = frame_or_series(range(3), index=Index([0, 1, 2], dtype=dtype))
# list of labels
check_indexing_smoketest_or_raises(obj, "loc", key, fails=KeyError)

@pytest.mark.parametrize(
"key, typs",
"index",
[
[[0, 1, 2], ["ints", "uints", "floats"]],
[[1, 3.0, "A"], ["ints", "uints", "floats"]],
None,
Index([0, 1, 2], dtype=np.int64),
Index([0, 1, 2], dtype=np.uint64),
Index([0, 1, 2], dtype=np.float64),
MultiIndex.from_arrays([range(3), range(3)]),
],
)
@pytest.mark.parametrize("kind", ["series", "frame"])
def test_loc_getitem_label_list(self, key, typs, kind, request):
for typ in typs:
obj = request.getfixturevalue(f"{kind}_{typ}")
# list of labels
check_indexing_smoketest_or_raises(obj, "loc", key, fails=KeyError)

@pytest.mark.parametrize(
"key, typs, axes",
[
[[0, 1, 2], ["empty"], None],
[[0, 2, 10], ["ints", "uints", "floats"], 0],
[[3, 6, 7], ["ints", "uints", "floats"], 1],
# GH 17758 - MultiIndex and missing keys
[[(1, 3), (1, 4), (2, 5)], ["multi"], 0],
],
"key", [[0, 1, 2], [0, 2, 10], [3, 6, 7], [(1, 3), (1, 4), (2, 5)]]
)
@pytest.mark.parametrize("kind", ["series", "frame"])
def test_loc_getitem_label_list_with_missing(self, key, typs, axes, kind, request):
for typ in typs:
obj = request.getfixturevalue(f"{kind}_{typ}")
check_indexing_smoketest_or_raises(
obj, "loc", key, axes=axes, fails=KeyError
)
def test_loc_getitem_label_list_with_missing(self, key, index, frame_or_series):
if index is None:
obj = frame_or_series()
else:
obj = frame_or_series(range(len(index)), index=index)
check_indexing_smoketest_or_raises(obj, "loc", key, fails=KeyError)

@pytest.mark.parametrize("typs", ["ints", "uints"])
@pytest.mark.parametrize("kind", ["series", "frame"])
def test_loc_getitem_label_list_fails(self, typs, kind, request):
@pytest.mark.parametrize("dtype", [np.int64, np.uint64])
def test_loc_getitem_label_list_fails(self, dtype, frame_or_series):
# fails
obj = request.getfixturevalue(f"{kind}_{typs}")
obj = frame_or_series(range(3), Index([0, 1, 2], dtype=dtype))
check_indexing_smoketest_or_raises(
obj, "loc", [20, 30, 40], axes=1, fails=KeyError
)

def test_loc_getitem_label_array_like(self):
# TODO: test something?
# array like
pass

@pytest.mark.parametrize("kind", ["series", "frame"])
def test_loc_getitem_bool(self, kind, request):
obj = request.getfixturevalue(f"{kind}_empty")
def test_loc_getitem_bool(self, frame_or_series):
obj = frame_or_series()
# boolean indexers
b = [True, False, True, False]

check_indexing_smoketest_or_raises(obj, "loc", b, fails=IndexError)

@pytest.mark.parametrize(
"slc, typs, axes, fails",
"slc, indexes, axes, fails",
[
[
slice(1, 3),
["labels", "mixed", "empty", "ts", "floats"],
[
Index(list("abcd"), dtype=object),
Index([2, 4, "null", 8], dtype=object),
None,
date_range("20130101", periods=4),
Index(range(0, 12, 3), dtype=np.float64),
],
None,
TypeError,
],
[slice("20130102", "20130104"), ["ts"], 1, TypeError],
[slice(2, 8), ["mixed"], 0, TypeError],
[slice(2, 8), ["mixed"], 1, KeyError],
[slice(2, 4, 2), ["mixed"], 0, TypeError],
[
slice("20130102", "20130104"),
[date_range("20130101", periods=4)],
1,
TypeError,
],
[slice(2, 8), [Index([2, 4, "null", 8], dtype=object)], 0, TypeError],
[slice(2, 8), [Index([2, 4, "null", 8], dtype=object)], 1, KeyError],
[slice(2, 4, 2), [Index([2, 4, "null", 8], dtype=object)], 0, TypeError],
],
)
@pytest.mark.parametrize("kind", ["series", "frame"])
def test_loc_getitem_label_slice(self, slc, typs, axes, fails, kind, request):
def test_loc_getitem_label_slice(self, slc, indexes, axes, fails, frame_or_series):
# label slices (with ints)

# real label slices

# GH 14316
for typ in typs:
obj = request.getfixturevalue(f"{kind}_{typ}")
for index in indexes:
if index is None:
obj = frame_or_series()
else:
obj = frame_or_series(range(len(index)), index=index)
check_indexing_smoketest_or_raises(
obj,
"loc",
Expand Down
38 changes: 26 additions & 12 deletions pandas/tests/indexing/test_scalar.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

from pandas import (
DataFrame,
Index,
Series,
Timedelta,
Timestamp,
Expand All @@ -32,29 +33,42 @@ def generate_indices(f, values=False):


class TestScalar:
@pytest.mark.parametrize("kind", ["series", "frame"])
@pytest.mark.parametrize("col", ["ints", "uints"])
def test_iat_set_ints(self, kind, col, request):
f = request.getfixturevalue(f"{kind}_{col}")
@pytest.mark.parametrize("dtype", [np.int64, np.uint64])
def test_iat_set_ints(self, dtype, frame_or_series):
f = frame_or_series(range(3), index=Index([0, 1, 2], dtype=dtype))
indices = generate_indices(f, True)
for i in indices:
f.iat[i] = 1
expected = f.values[i]
tm.assert_almost_equal(expected, 1)

@pytest.mark.parametrize("kind", ["series", "frame"])
@pytest.mark.parametrize("col", ["labels", "ts", "floats"])
def test_iat_set_other(self, kind, col, request):
f = request.getfixturevalue(f"{kind}_{col}")
@pytest.mark.parametrize(
"index",
[
Index(list("abcd"), dtype=object),
date_range("20130101", periods=4),
Index(range(0, 8, 2), dtype=np.float64),
],
)
def test_iat_set_other(self, index, frame_or_series):
f = frame_or_series(range(len(index)), index=index)
msg = "iAt based indexing can only have integer indexers"
with pytest.raises(ValueError, match=msg):
idx = next(generate_indices(f, False))
f.iat[idx] = 1

@pytest.mark.parametrize("kind", ["series", "frame"])
@pytest.mark.parametrize("col", ["ints", "uints", "labels", "ts", "floats"])
def test_at_set_ints_other(self, kind, col, request):
f = request.getfixturevalue(f"{kind}_{col}")
@pytest.mark.parametrize(
"index",
[
Index(list("abcd"), dtype=object),
date_range("20130101", periods=4),
Index(range(0, 8, 2), dtype=np.float64),
Index(range(0, 8, 2), dtype=np.uint64),
Index(range(0, 8, 2), dtype=np.int64),
],
)
def test_at_set_ints_other(self, index, frame_or_series):
f = frame_or_series(range(len(index)), index=index)
indices = generate_indices(f, False)
for i in indices:
f.at[i] = 1
Expand Down

0 comments on commit 9f9a643

Please sign in to comment.