code: def normalize(
      x: ArrayLike,
      eps: float = 1.0e-8,
      fallback: Optional[ArrayLike] = None,
  ) -> np.ndarray:
      x = np.asarray(x, dtype=np.float64)
      norm_x = np.linalg.norm(x)
      if norm_x < eps:
          if fallback is None:
              raise ValueError("Expected non-zero vector.")
          else:
              return np.asarray(fallback, dtype=np.float64)
      return x / norm_x
  
imports: import itertools
  import numpy
  import pyquaternion
  import traitlets
  from typing import Optional, Union, Tuple
  from kubric.core import traits
  from kubric.core import assets
  from kubric.core import materials
  from kubric.kubric_typing import ArrayLike
label_desc: Use image node_id 2 for calling a global function with example usage: normalize(x, eps, fallback) and returns: unknown, np