3232from ..core .util import (
3333 datetime_types ,
3434 dt_to_int ,
35+ dtype_kind ,
3536 group_sanitizer ,
3637 is_cupy_array ,
3738 is_dask_array ,
@@ -1065,16 +1066,23 @@ class interpolate_curve(Operation):
10651066
10661067 _per_element = True
10671068
1069+ @staticmethod
1070+ def _get_dtype (obj ):
1071+ if dtype_kind (obj ) == "O" :
1072+ # Handle non-numpy objects like Pandas 3.0 StringArray
1073+ return "O"
1074+ return obj .dtype
1075+
10681076 @classmethod
10691077 def pts_to_prestep (cls , x , values ):
10701078 steps = np .zeros (2 * len (x ) - 1 )
1071- value_steps = tuple (np .empty (2 * len (x ) - 1 , dtype = v . dtype ) for v in values )
1079+ value_steps = tuple (np .empty (2 * len (x ) - 1 , dtype = cls . _get_dtype ( v ) ) for v in values )
10721080
10731081 steps [0 ::2 ] = x
10741082 steps [1 ::2 ] = steps [0 :- 2 :2 ]
10751083
10761084 val_arrays = []
1077- for v , s in zip (values , value_steps , strict = None ):
1085+ for v , s in zip (values , value_steps , strict = True ):
10781086 s [0 ::2 ] = v
10791087 s [1 ::2 ] = s [2 ::2 ]
10801088 val_arrays .append (s )
@@ -1084,13 +1092,13 @@ def pts_to_prestep(cls, x, values):
10841092 @classmethod
10851093 def pts_to_midstep (cls , x , values ):
10861094 steps = np .zeros (2 * len (x ))
1087- value_steps = tuple (np .empty (2 * len (x ), dtype = v . dtype ) for v in values )
1095+ value_steps = tuple (np .empty (2 * len (x ), dtype = cls . _get_dtype ( v ) ) for v in values )
10881096
10891097 steps [1 :- 1 :2 ] = steps [2 ::2 ] = x [:- 1 ] + (x [1 :] - x [:- 1 ])/ 2
10901098 steps [0 ], steps [- 1 ] = x [0 ], x [- 1 ]
10911099
10921100 val_arrays = []
1093- for v , s in zip (values , value_steps , strict = None ):
1101+ for v , s in zip (values , value_steps , strict = True ):
10941102 s [0 ::2 ] = v
10951103 s [1 ::2 ] = s [0 ::2 ]
10961104 val_arrays .append (s )
@@ -1100,13 +1108,13 @@ def pts_to_midstep(cls, x, values):
11001108 @classmethod
11011109 def pts_to_poststep (cls , x , values ):
11021110 steps = np .zeros (2 * len (x ) - 1 )
1103- value_steps = tuple (np .empty (2 * len (x ) - 1 , dtype = v . dtype ) for v in values )
1111+ value_steps = tuple (np .empty (2 * len (x ) - 1 , dtype = cls . _get_dtype ( v ) ) for v in values )
11041112
11051113 steps [0 ::2 ] = x
11061114 steps [1 ::2 ] = steps [2 ::2 ]
11071115
11081116 val_arrays = []
1109- for v , s in zip (values , value_steps , strict = None ):
1117+ for v , s in zip (values , value_steps , strict = True ):
11101118 s [0 ::2 ] = v
11111119 s [1 ::2 ] = s [0 :- 2 :2 ]
11121120 val_arrays .append (s )
0 commit comments