code: def broadcast_shapes(*shapes):
      if len(shapes) == 0:
          raise ValueError("shapes=[] must be non-empty")
      elif len(shapes) == 1:
          return shapes[0]
      result = _broadcast_shapes(shapes[0], shapes[1])
      for i in range(2, len(shapes)):
          result = _broadcast_shapes(result, shapes[i])
      return result
  
imports: import numpy
  import hypothesis.extra.numpy
  from hypothesis import strategies
  from hypothesis.internal.floats import float_of
  from functools import reduce
  from operator import mul
  import sys
  import string
  import ml_dtypes
  import ivy_tests.test_ivy.helpers.globals
  from ..pipeline_helper import WithBackendContext
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers.hypothesis_helpers.dtype_helpers import get_dtypes
  from .None import general_helpers
  from .None import dtype_helpers, number_helpers
  from ..globals import mod_backend
label_desc: Use image node_id 13 for calling a global function with example usage: broadcast_shapes() and returns: result, shapes