@@ -433,27 +433,41 @@ def test_setitem_dict_and_set_disallowed_multiindex(self, key):
433
433
class TestSetitemValidation :
434
434
# This is adapted from pandas/tests/arrays/masked/test_indexing.py
435
435
# but checks for warnings instead of errors.
436
- def _check_setitem_invalid (self , ser , invalid , indexer , warn ):
437
- msg = "Setting an item of incompatible dtype is deprecated"
438
- msg = re .escape (msg )
439
-
436
+ def _check_setitem_invalid (self , ser , invalid , indexer ):
440
437
orig_ser = ser .copy ()
441
438
442
- with tm . assert_produces_warning ( warn , match = msg ):
439
+ with pytest . raises ( TypeError , match = "Invalid value" ):
443
440
ser [indexer ] = invalid
444
441
ser = orig_ser .copy ()
445
442
446
- with tm . assert_produces_warning ( warn , match = msg ):
443
+ with pytest . raises ( TypeError , match = "Invalid value" ):
447
444
ser .iloc [indexer ] = invalid
448
445
ser = orig_ser .copy ()
449
446
450
- with tm . assert_produces_warning ( warn , match = msg ):
447
+ with pytest . raises ( TypeError , match = "Invalid value" ):
451
448
ser .loc [indexer ] = invalid
452
449
ser = orig_ser .copy ()
453
450
454
- with tm . assert_produces_warning ( warn , match = msg ):
451
+ with pytest . raises ( TypeError , match = "Invalid value" ):
455
452
ser [:] = invalid
456
453
454
+ def _check_setitem_valid (self , ser , invalid , indexer ):
455
+ msg = "Setting an item of incompatible dtype is deprecated"
456
+ msg = re .escape (msg )
457
+
458
+ orig_ser = ser .copy ()
459
+
460
+ ser [indexer ] = invalid
461
+ ser = orig_ser .copy ()
462
+
463
+ ser .iloc [indexer ] = invalid
464
+ ser = orig_ser .copy ()
465
+
466
+ ser .loc [indexer ] = invalid
467
+ ser = orig_ser .copy ()
468
+
469
+ ser [:] = invalid
470
+
457
471
_invalid_scalars = [
458
472
1 + 2j ,
459
473
"True" ,
@@ -471,20 +485,19 @@ def _check_setitem_invalid(self, ser, invalid, indexer, warn):
471
485
@pytest .mark .parametrize ("indexer" , _indexers )
472
486
def test_setitem_validation_scalar_bool (self , invalid , indexer ):
473
487
ser = Series ([True , False , False ], dtype = "bool" )
474
- self ._check_setitem_invalid (ser , invalid , indexer , FutureWarning )
488
+ self ._check_setitem_invalid (ser , invalid , indexer )
475
489
476
490
@pytest .mark .parametrize ("invalid" , _invalid_scalars + [True , 1.5 , np .float64 (1.5 )])
477
491
@pytest .mark .parametrize ("indexer" , _indexers )
478
492
def test_setitem_validation_scalar_int (self , invalid , any_int_numpy_dtype , indexer ):
479
493
ser = Series ([1 , 2 , 3 ], dtype = any_int_numpy_dtype )
480
494
if isna (invalid ) and invalid is not NaT and not np .isnat (invalid ):
481
- warn = None
495
+ self . _check_setitem_valid ( ser , invalid , indexer )
482
496
else :
483
- warn = FutureWarning
484
- self ._check_setitem_invalid (ser , invalid , indexer , warn )
497
+ self ._check_setitem_invalid (ser , invalid , indexer )
485
498
486
499
@pytest .mark .parametrize ("invalid" , _invalid_scalars + [True ])
487
500
@pytest .mark .parametrize ("indexer" , _indexers )
488
501
def test_setitem_validation_scalar_float (self , invalid , float_numpy_dtype , indexer ):
489
502
ser = Series ([1 , 2 , None ], dtype = float_numpy_dtype )
490
- self ._check_setitem_invalid (ser , invalid , indexer , FutureWarning )
503
+ self ._check_setitem_invalid (ser , invalid , indexer )
0 commit comments