@@ -1704,10 +1704,10 @@ def objs_to_bool(vals: ArrayLike) -> tuple[np.ndarray, type]:
17041704 def result_to_bool (
17051705 result : np .ndarray ,
17061706 inference : type ,
1707- nullable : bool = False ,
1707+ result_mask ,
17081708 ) -> ArrayLike :
1709- if nullable :
1710- return BooleanArray (result .astype (bool , copy = False ), result == - 1 )
1709+ if result_mask is not None :
1710+ return BooleanArray (result .astype (bool , copy = False ), result_mask )
17111711 else :
17121712 return result .astype (inference , copy = False )
17131713
@@ -1985,10 +1985,8 @@ def _preprocessing(values):
19851985 return values ._data , None
19861986 return values , None
19871987
1988- def _postprocessing (
1989- vals , inference , nullable : bool = False , result_mask = None
1990- ) -> ArrayLike :
1991- if nullable :
1988+ def _postprocessing (vals , inference , result_mask = None ) -> ArrayLike :
1989+ if result_mask is not None :
19921990 if result_mask .ndim == 2 :
19931991 result_mask = result_mask [:, 0 ]
19941992 return FloatingArray (np .sqrt (vals ), result_mask .view (np .bool_ ))
@@ -3808,13 +3806,11 @@ def blk_func(values: ArrayLike) -> ArrayLike:
38083806 mask = mask .reshape (- 1 , 1 )
38093807 func = partial (func , mask = mask )
38103808
3811- if how != "std" :
3812- is_nullable = isinstance (values , BaseMaskedArray )
3813- func = partial (func , nullable = is_nullable )
3814-
3815- elif isinstance (values , BaseMaskedArray ):
3809+ result_mask = None
3810+ if isinstance (values , BaseMaskedArray ):
38163811 result_mask = np .zeros (result .shape , dtype = np .bool_ )
3817- func = partial (func , result_mask = result_mask )
3812+
3813+ func = partial (func , result_mask = result_mask )
38183814
38193815 # Call func to modify result in place
38203816 if how == "std" :
@@ -3825,14 +3821,12 @@ def blk_func(values: ArrayLike) -> ArrayLike:
38253821 if values .ndim == 1 :
38263822 assert result .shape [1 ] == 1 , result .shape
38273823 result = result [:, 0 ]
3824+ if result_mask is not None :
3825+ assert result_mask .shape [1 ] == 1 , result_mask .shape
3826+ result_mask = result_mask [:, 0 ]
38283827
38293828 if post_processing :
3830- pp_kwargs : dict [str , bool | np .ndarray ] = {}
3831- pp_kwargs ["nullable" ] = isinstance (values , BaseMaskedArray )
3832- if how == "std" and pp_kwargs ["nullable" ]:
3833- pp_kwargs ["result_mask" ] = result_mask
3834-
3835- result = post_processing (result , inferences , ** pp_kwargs )
3829+ result = post_processing (result , inferences , result_mask = result_mask )
38363830
38373831 if how == "std" and is_datetimelike :
38383832 values = cast ("DatetimeArray | TimedeltaArray" , values )
0 commit comments