@@ -3702,6 +3702,72 @@ def test_pow_with_all_na_float():
37023702 tm .assert_series_equal (result , expected )
37033703
37043704
3705+ @pytest .mark .parametrize (
3706+ "type_name, expected_size" ,
3707+ [
3708+ # Integer types
3709+ ("int8" , 1 ),
3710+ ("int16" , 2 ),
3711+ ("int32" , 4 ),
3712+ ("int64" , 8 ),
3713+ ("uint8" , 1 ),
3714+ ("uint16" , 2 ),
3715+ ("uint32" , 4 ),
3716+ ("uint64" , 8 ),
3717+ # Floating point types
3718+ ("float16" , 2 ),
3719+ ("float32" , 4 ),
3720+ ("float64" , 8 ),
3721+ # Boolean
3722+ ("bool_" , 1 ),
3723+ # Date and timestamp types
3724+ ("date32" , 4 ),
3725+ ("date64" , 8 ),
3726+ ("timestamp" , 8 ),
3727+ # Time types
3728+ ("time32" , 4 ),
3729+ ("time64" , 8 ),
3730+ # Decimal types
3731+ ("decimal128" , 16 ),
3732+ ("decimal256" , 32 ),
3733+ ],
3734+ )
3735+ def test_arrow_dtype_itemsize_fixed_width (type_name , expected_size ):
3736+ # GH 57948
3737+
3738+ parametric_type_map = {
3739+ "timestamp" : pa .timestamp ("ns" ),
3740+ "time32" : pa .time32 ("s" ),
3741+ "time64" : pa .time64 ("ns" ),
3742+ "decimal128" : pa .decimal128 (38 , 10 ),
3743+ "decimal256" : pa .decimal256 (76 , 10 ),
3744+ }
3745+
3746+ if type_name in parametric_type_map :
3747+ arrow_type = parametric_type_map .get (type_name )
3748+ else :
3749+ arrow_type = getattr (pa , type_name )()
3750+ dtype = ArrowDtype (arrow_type )
3751+
3752+ if type_name == "bool_" :
3753+ expected_size = dtype .numpy_dtype .itemsize
3754+
3755+ assert dtype .itemsize == expected_size , (
3756+ f"{ type_name } expected { expected_size } , got { dtype .itemsize } "
3757+ f"(bit_width={ getattr (dtype .pyarrow_dtype , 'bit_width' , 'N/A' )} )"
3758+ )
3759+
3760+
3761+ @pytest .mark .parametrize ("type_name" , ["string" , "binary" , "large_string" ])
3762+ def test_arrow_dtype_itemsize_variable_width (type_name ):
3763+ # GH 57948
3764+
3765+ arrow_type = getattr (pa , type_name )()
3766+ dtype = ArrowDtype (arrow_type )
3767+
3768+ assert dtype .itemsize == dtype .numpy_dtype .itemsize
3769+
3770+
37053771def test_cast_pontwise_result_decimal_nan ():
37063772 # GH#62522 we don't want to get back null[pyarrow] here
37073773 ser = pd .Series ([], dtype = "float64[pyarrow]" )
0 commit comments