def _reconstruct_ea_result( self, values: ExtensionArray, res_values: np.ndarray ) -> ExtensionArray: """ Construct an ExtensionArray result from an ndarray result. """ dtype: BaseMaskedDtype | StringDtype if isinstance(values.dtype, StringDtype): dtype = values.dtype string_array_cls = dtype.construct_array_type() return string_array_cls._from_sequence(res_values, dtype=dtype) elif isinstance(values.dtype, BaseMaskedDtype): new_dtype = self._get_result_dtype(values.dtype.numpy_dtype) dtype = BaseMaskedDtype.from_numpy_dtype(new_dtype) masked_array_cls = dtype.construct_array_type() return masked_array_cls._from_sequence(res_values, dtype=dtype) elif isinstance(values, (DatetimeArray, TimedeltaArray, PeriodArray)): # In to_cython_values we took a view as M8[ns] assert res_values.dtype == "M8[ns]" res_values = res_values.view(values._ndarray.dtype) return values._from_backing_data(res_values) raise NotImplementedError
def _reconstruct_ea_result( self, values: ExtensionArray, res_values: np.ndarray ) -> ExtensionArray: """ Construct an ExtensionArray result from an ndarray result. """ dtype: BaseMaskedDtype | StringDtype if isinstance(values.dtype, StringDtype): dtype = values.dtype cls = dtype.construct_array_type() return cls._from_sequence(res_values, dtype=dtype) elif isinstance(values.dtype, BaseMaskedDtype): new_dtype = self._get_result_dtype(values.dtype.numpy_dtype) dtype = BaseMaskedDtype.from_numpy_dtype(new_dtype) # error: Incompatible types in assignment (expression has type # "Type[BaseMaskedArray]", variable has type "Type[BaseStringArray]") cls = dtype.construct_array_type() # type: ignore[assignment] return cls._from_sequence(res_values, dtype=dtype) elif isinstance(values, (DatetimeArray, TimedeltaArray, PeriodArray)): # In to_cython_values we took a view as M8[ns] assert res_values.dtype == "M8[ns]" res_values = res_values.view(values._ndarray.dtype) return values._from_backing_data(res_values) raise NotImplementedError