def METHOD_NAME(window_size,
                         stride=None,
                         window_shift=None,
                         window_stride=1):
  """A sliding window over a dataset.
  This transformation passes a sliding window over this dataset. The window size
  is `window_size`, the stride of the input elements is `window_stride`, and the
  shift between consecutive windows is `window_shift`. If the remaining elements
  cannot fill up the sliding window, this transformation will drop the final
  smaller element. For example:
  ```python
  # NOTE: The following examples use `{ ... }` to represent the
  # contents of a dataset.
  a = { [1], [2], [3], [4], [5], [6] }
  a.apply(sliding_window_batch(window_size=3)) ==
  { [[1], [2], [3]], [[2], [3], [4]], [[3], [4], [5]], [[4], [5], [6]] }
  a.apply(sliding_window_batch(window_size=3, window_shift=2)) ==
  { [[1], [2], [3]], [[3], [4], [5]] }
  a.apply(sliding_window_batch(window_size=3, window_stride=2)) ==
  { [[1], [3], [5]], [[2], [4], [6]] }
  ```
  Args:
    window_size: A `tf.int64` scalar `tf.Tensor`, representing the number of
      elements in the sliding window. It must be positive.
    stride: (Optional.) A `tf.int64` scalar `tf.Tensor`, representing the
      forward shift of the sliding window in each iteration. The default is `1`.
      It must be positive. Deprecated alias for `window_shift`.
    window_shift: (Optional.) A `tf.int64` scalar `tf.Tensor`, representing the
      forward shift of the sliding window in each iteration. The default is `1`.
      It must be positive.
    window_stride: (Optional.) A `tf.int64` scalar `tf.Tensor`, representing the
      stride of the input elements in the sliding window. The default is `1`.
      It must be positive.
  Returns:
    A `Dataset` transformation function, which can be passed to
    `tf.data.Dataset.apply`.
  Raises:
    ValueError: if invalid arguments are provided.
  """
  if stride is None and window_shift is None:
    window_shift = 1
  elif stride is not None and window_shift is None:
    window_shift = stride
  elif stride is not None and window_shift is not None:
    raise ValueError("Cannot specify both `stride` and `window_shift`")
  def _apply_fn(dataset):
    return _SlideDataset(dataset, window_size, window_shift, window_stride)
  return _apply_fn