code: def kaiser_window(
      window_length: int,
      periodic: bool = True,
      beta: float = 12.0,
      *,
      dtype: Optional[np.dtype] = None,
      out: Optional[np.ndarray] = None,
  ) -> np.ndarray:
      if window_length < 2:
          return np.ones([window_length], dtype=dtype)
      if periodic is False:
          return np.kaiser(M=window_length, beta=beta).astype(dtype)
      else:
          return np.kaiser(M=window_length + 1, beta=beta)[:-1].astype(
              dtype
          )
  
file_path: ivy/ivy/functional/backends/numpy/experimental/creation.py
imports: from typing import Optional, Tuple, Sequence, Union
  import numpy
  import ivy
label_desc: Use image node_id 4 for calling a global function with example usage: kaiser_window(window_length, periodic, beta) and returns: np, np, np