docs: def coerce_nc3_dtype(arr):
      """Coerce an array to a data type that can be stored in a netCDF-3 file
  
      This function performs the following dtype conversions:
          int64 -> int32
          bool -> int8
  
      Data is checked for equality, or equivalence (non-NaN values) with
      `np.allclose` with the default keyword arguments.
      """
      dtype = str(arr.dtype)
      if dtype in _nc3_dtype_coercions:
          new_dtype = _nc3_dtype_coercions[dtype]
          # TODO: raise a warning whenever casting the data-type instead?
          cast_arr = arr.astype(new_dtype)
          if not (cast_arr == arr).all():
              raise ValueError('could not safely cast array from dtype %s to %s'
                               % (dtype, new_dtype))
          arr = cast_arr
      return arr