parameters: (
      values: ArrayLike, dtype: DtypeObj, original: AnyArrayLike
  )
return_statement: return values
docstring: reverse of _ensure_data
  
      Parameters
      ----------
      values : np.ndarray or ExtensionArray
      dtype : np.dtype or ExtensionDtype
      original : AnyArrayLike
  
      Returns
      -------
      ExtensionArray or np.ndarray
docstring_summary: reverse of _ensure_data
docstring_tokens: reverse of _ensure_data
function: def _reconstruct_data(
      values: ArrayLike, dtype: DtypeObj, original: AnyArrayLike
  ) -> ArrayLike:
      """
      reverse of _ensure_data
  
      Parameters
      ----------
      values : np.ndarray or ExtensionArray
      dtype : np.dtype or ExtensionDtype
      original : AnyArrayLike
  
      Returns
      -------
      ExtensionArray or np.ndarray
      """
      if isinstance(values, ABCExtensionArray) and values.dtype == dtype:
          # Catch DatetimeArray/TimedeltaArray
          return values
  
      if not isinstance(dtype, np.dtype):
          # i.e. ExtensionDtype
          cls = dtype.construct_array_type()
          if isinstance(values, cls) and values.dtype == dtype:
              return values
  
          values = cls._from_sequence(values)
      elif is_bool_dtype(dtype):
          values = values.astype(dtype, copy=False)
  
          # we only support object dtypes bool Index
          if isinstance(original, ABCIndex):
              values = values.astype(object, copy=False)
      elif dtype is not None:
          if is_datetime64_dtype(dtype):
              dtype = np.dtype("datetime64[ns]")
          elif is_timedelta64_dtype(dtype):
              dtype = np.dtype("timedelta64[ns]")
  
          values = values.astype(dtype, copy=False)
  
      return values
function_tokens: def _reconstruct_data ( values : ArrayLike , dtype : DtypeObj , original : AnyArrayLike ) -> ArrayLike : if isinstance ( values , ABCExtensionArray ) and values . dtype == dtype : # Catch DatetimeArray/TimedeltaArray return values if not isinstance ( dtype , np . dtype ) : # i.e. ExtensionDtype cls = dtype . construct_array_type ( ) if isinstance ( values , cls ) and values . dtype == dtype : return values values = cls . _from_sequence ( values ) elif is_bool_dtype ( dtype ) : values = values . astype ( dtype , copy = False ) # we only support object dtypes bool Index if isinstance ( original , ABCIndex ) : values = values . astype ( object , copy = False ) elif dtype is not None : if is_datetime64_dtype ( dtype ) : dtype = np . dtype ( "datetime64[ns]" ) elif is_timedelta64_dtype ( dtype ) : dtype = np . dtype ( "timedelta64[ns]" ) values = values . astype ( dtype , copy = False ) return values