code: def _iter_product(*args, repeat=1):
      # itertools.product
      pools = [tuple(pool) for pool in args] * repeat
      result = [[]]
      for pool in pools:
          result = [x + [y] for x in result for y in pool]
      for prod in result:
          yield tuple(prod)
  
imports: from typing import Union, Tuple, Optional, Sequence, Iterable, Generator
  import warnings
  import ivy
  from ivy.utils.backend import current_backend
  from ivy.utils.exceptions import handle_exceptions
  from ivy.func_wrapper import outputs_to_ivy_arrays, handle_nestable, to_native_arrays_and_back, handle_out_argument, infer_dtype, handle_array_like_without_promotion, inputs_to_ivy_arrays, handle_device, handle_backend_invalid, handle_array_function
label_desc: Use image node_id 8 for calling a global function with example usage: _iter_product() without return types