@@ -1879,22 +1879,30 @@ def test_add_new_column_infer_string():
1879
1879
class TestSetitemValidation :
1880
1880
# This is adapted from pandas/tests/arrays/masked/test_indexing.py
1881
1881
# but checks for warnings instead of errors.
1882
- def _check_setitem_invalid (self , df , invalid , indexer , warn ):
1883
- msg = "Setting an item of incompatible dtype is deprecated"
1884
- msg = re .escape (msg )
1885
-
1882
+ def _check_setitem_invalid (self , df , invalid , indexer ):
1886
1883
orig_df = df .copy ()
1887
1884
1888
1885
# iloc
1889
- with tm . assert_produces_warning ( warn , match = msg ):
1886
+ with pytest . raises ( TypeError , match = "Invalid value" ):
1890
1887
df .iloc [indexer , 0 ] = invalid
1891
1888
df = orig_df .copy ()
1892
1889
1893
1890
# loc
1894
- with tm . assert_produces_warning ( warn , match = msg ):
1891
+ with pytest . raises ( TypeError , match = "Invalid value" ):
1895
1892
df .loc [indexer , "a" ] = invalid
1896
1893
df = orig_df .copy ()
1897
1894
1895
+ def _check_setitem_valid (self , df , invalid , indexer ):
1896
+ orig_df = df .copy ()
1897
+
1898
+ # iloc
1899
+ df .iloc [indexer , 0 ] = invalid
1900
+ df = orig_df .copy ()
1901
+
1902
+ # loc
1903
+ df .loc [indexer , "a" ] = invalid
1904
+ df = orig_df .copy ()
1905
+
1898
1906
_invalid_scalars = [
1899
1907
1 + 2j ,
1900
1908
"True" ,
@@ -1912,20 +1920,19 @@ def _check_setitem_invalid(self, df, invalid, indexer, warn):
1912
1920
@pytest .mark .parametrize ("indexer" , _indexers )
1913
1921
def test_setitem_validation_scalar_bool (self , invalid , indexer ):
1914
1922
df = DataFrame ({"a" : [True , False , False ]}, dtype = "bool" )
1915
- self ._check_setitem_invalid (df , invalid , indexer , FutureWarning )
1923
+ self ._check_setitem_invalid (df , invalid , indexer )
1916
1924
1917
1925
@pytest .mark .parametrize ("invalid" , _invalid_scalars + [True , 1.5 , np .float64 (1.5 )])
1918
1926
@pytest .mark .parametrize ("indexer" , _indexers )
1919
1927
def test_setitem_validation_scalar_int (self , invalid , any_int_numpy_dtype , indexer ):
1920
1928
df = DataFrame ({"a" : [1 , 2 , 3 ]}, dtype = any_int_numpy_dtype )
1921
1929
if isna (invalid ) and invalid is not pd .NaT and not np .isnat (invalid ):
1922
- warn = None
1930
+ self . _check_setitem_valid ( df , invalid , indexer )
1923
1931
else :
1924
- warn = FutureWarning
1925
- self ._check_setitem_invalid (df , invalid , indexer , warn )
1932
+ self ._check_setitem_invalid (df , invalid , indexer )
1926
1933
1927
1934
@pytest .mark .parametrize ("invalid" , _invalid_scalars + [True ])
1928
1935
@pytest .mark .parametrize ("indexer" , _indexers )
1929
1936
def test_setitem_validation_scalar_float (self , invalid , float_numpy_dtype , indexer ):
1930
1937
df = DataFrame ({"a" : [1 , 2 , None ]}, dtype = float_numpy_dtype )
1931
- self ._check_setitem_invalid (df , invalid , indexer , FutureWarning )
1938
+ self ._check_setitem_invalid (df , invalid , indexer )
0 commit comments