Skip to content

Commit f6fdf6e

Browse files
committed
wip
1 parent b008a64 commit f6fdf6e

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

pandas/tests/series/indexing/test_indexing.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -433,27 +433,42 @@ def test_setitem_dict_and_set_disallowed_multiindex(self, key):
433433
class TestSetitemValidation:
434434
# This is adapted from pandas/tests/arrays/masked/test_indexing.py
435435
# but checks for warnings instead of errors.
436-
def _check_setitem_invalid(self, ser, invalid, indexer, warn):
436+
def _check_setitem_invalid(self, ser, invalid, indexer):
437437
msg = "Setting an item of incompatible dtype is deprecated"
438438
msg = re.escape(msg)
439439

440440
orig_ser = ser.copy()
441441

442-
with tm.assert_produces_warning(warn, match=msg):
442+
with pytest.raises(TypeError, match="Invalid value"):
443443
ser[indexer] = invalid
444444
ser = orig_ser.copy()
445445

446-
with tm.assert_produces_warning(warn, match=msg):
446+
with pytest.raises(TypeError, match="Invalid value"):
447447
ser.iloc[indexer] = invalid
448448
ser = orig_ser.copy()
449449

450-
with tm.assert_produces_warning(warn, match=msg):
450+
with pytest.raises(TypeError, match="Invalid value"):
451451
ser.loc[indexer] = invalid
452452
ser = orig_ser.copy()
453453

454-
with tm.assert_produces_warning(warn, match=msg):
454+
with pytest.raises(TypeError, match="Invalid value"):
455455
ser[:] = invalid
456456

457+
def _check_setitem_valid(self, ser, invalid, indexer):
458+
# Just check that no error is raised
459+
orig_ser = ser.copy()
460+
461+
ser[indexer] = invalid
462+
ser = orig_ser.copy()
463+
464+
ser.iloc[indexer] = invalid
465+
ser = orig_ser.copy()
466+
467+
ser.loc[indexer] = invalid
468+
ser = orig_ser.copy()
469+
470+
ser[:] = invalid
471+
457472
_invalid_scalars = [
458473
1 + 2j,
459474
"True",
@@ -471,20 +486,19 @@ def _check_setitem_invalid(self, ser, invalid, indexer, warn):
471486
@pytest.mark.parametrize("indexer", _indexers)
472487
def test_setitem_validation_scalar_bool(self, invalid, indexer):
473488
ser = Series([True, False, False], dtype="bool")
474-
self._check_setitem_invalid(ser, invalid, indexer, FutureWarning)
489+
self._check_setitem_invalid(ser, invalid, indexer)
475490

476491
@pytest.mark.parametrize("invalid", _invalid_scalars + [True, 1.5, np.float64(1.5)])
477492
@pytest.mark.parametrize("indexer", _indexers)
478493
def test_setitem_validation_scalar_int(self, invalid, any_int_numpy_dtype, indexer):
479494
ser = Series([1, 2, 3], dtype=any_int_numpy_dtype)
480495
if isna(invalid) and invalid is not NaT and not np.isnat(invalid):
481-
warn = None
496+
self._check_setitem_valid(ser, invalid, indexer)
482497
else:
483-
warn = FutureWarning
484-
self._check_setitem_invalid(ser, invalid, indexer, warn)
498+
self._check_setitem_invalid(ser, invalid, indexer)
485499

486500
@pytest.mark.parametrize("invalid", _invalid_scalars + [True])
487501
@pytest.mark.parametrize("indexer", _indexers)
488502
def test_setitem_validation_scalar_float(self, invalid, float_numpy_dtype, indexer):
489503
ser = Series([1, 2, None], dtype=float_numpy_dtype)
490-
self._check_setitem_invalid(ser, invalid, indexer, FutureWarning)
504+
self._check_setitem_invalid(ser, invalid, indexer)

0 commit comments

Comments
 (0)