@@ -433,27 +433,42 @@ 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 ):
436
+ def _check_setitem_invalid (self , ser , invalid , indexer ):
437
437
msg = "Setting an item of incompatible dtype is deprecated"
438
438
msg = re .escape (msg )
439
439
440
440
orig_ser = ser .copy ()
441
441
442
- with tm . assert_produces_warning ( warn , match = msg ):
442
+ with pytest . raises ( TypeError , match = "Invalid value" ):
443
443
ser [indexer ] = invalid
444
444
ser = orig_ser .copy ()
445
445
446
- with tm . assert_produces_warning ( warn , match = msg ):
446
+ with pytest . raises ( TypeError , match = "Invalid value" ):
447
447
ser .iloc [indexer ] = invalid
448
448
ser = orig_ser .copy ()
449
449
450
- with tm . assert_produces_warning ( warn , match = msg ):
450
+ with pytest . raises ( TypeError , match = "Invalid value" ):
451
451
ser .loc [indexer ] = invalid
452
452
ser = orig_ser .copy ()
453
453
454
- with tm . assert_produces_warning ( warn , match = msg ):
454
+ with pytest . raises ( TypeError , match = "Invalid value" ):
455
455
ser [:] = invalid
456
456
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
+
457
472
_invalid_scalars = [
458
473
1 + 2j ,
459
474
"True" ,
@@ -471,20 +486,19 @@ def _check_setitem_invalid(self, ser, invalid, indexer, warn):
471
486
@pytest .mark .parametrize ("indexer" , _indexers )
472
487
def test_setitem_validation_scalar_bool (self , invalid , indexer ):
473
488
ser = Series ([True , False , False ], dtype = "bool" )
474
- self ._check_setitem_invalid (ser , invalid , indexer , FutureWarning )
489
+ self ._check_setitem_invalid (ser , invalid , indexer )
475
490
476
491
@pytest .mark .parametrize ("invalid" , _invalid_scalars + [True , 1.5 , np .float64 (1.5 )])
477
492
@pytest .mark .parametrize ("indexer" , _indexers )
478
493
def test_setitem_validation_scalar_int (self , invalid , any_int_numpy_dtype , indexer ):
479
494
ser = Series ([1 , 2 , 3 ], dtype = any_int_numpy_dtype )
480
495
if isna (invalid ) and invalid is not NaT and not np .isnat (invalid ):
481
- warn = None
496
+ self . _check_setitem_valid ( ser , invalid , indexer )
482
497
else :
483
- warn = FutureWarning
484
- self ._check_setitem_invalid (ser , invalid , indexer , warn )
498
+ self ._check_setitem_invalid (ser , invalid , indexer )
485
499
486
500
@pytest .mark .parametrize ("invalid" , _invalid_scalars + [True ])
487
501
@pytest .mark .parametrize ("indexer" , _indexers )
488
502
def test_setitem_validation_scalar_float (self , invalid , float_numpy_dtype , indexer ):
489
503
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