code: def broadcast_shapes(
      *shapes: Union[List[int], List[Tuple]]
  ) -> Tuple[int]:
      """Broadcasts shapes.
  
      Parameters
      ----------
      shapes
          The shapes to broadcast.
  
      Returns
      -------
      ret
          The broadcasted shape.
  
      Examples
      --------
      >>> x = [(3, 3), (3, 1)]
      >>> print(ivy.broadcast_shapes(*x))
      (3, 3)
  
      >>> print(ivy.broadcast_shapes(*[(3, 3),(3, 1),(1, 3)]))
      (3, 3)
      """
      return ivy.current_backend().broadcast_shapes(*shapes)
  
imports: from typing import Optional, Union, Tuple, Iterable, Sequence, Callable, Any, Literal, List
  from numbers import Number
  from functools import partial
  import math
  import ivy
  from ivy.func_wrapper import handle_out_argument, handle_partial_mixed_function, to_native_arrays_and_back, inputs_to_native_shapes, handle_nestable, handle_array_like_without_promotion, handle_view, inputs_to_ivy_arrays, handle_array_function, handle_device, handle_backend_invalid
  from ivy.functional.ivy.general import _numel
  from ivy.utils.backend import current_backend
  from ivy.utils.exceptions import handle_exceptions
label_desc: Use image node_id 35 for calling a global function with example usage: broadcast_shapes() and returns: ivy