code: def shape(
      x: Union[tf.Tensor, tf.Variable],
      /,
      *,
      as_array: bool = False,
  ) -> Union[tf.Tensor, ivy.Shape, ivy.Array]:
      if as_array:
          return ivy.array(tf.shape(x), dtype=ivy.default_int_dtype())
      else:
          return ivy.Shape(x.shape)
  
imports: from typing import Optional, Union, Sequence, Callable, Tuple
  import numpy
  import multiprocessing
  from numbers import Number
  import tensorflow
  import ivy
  from ivy.functional.ivy.gradients import _is_variable
  from ivy.func_wrapper import with_unsupported_dtypes
  from ivy.utils.exceptions import _check_inplace_update_support
  from .None import backend_version
  from ...ivy.general import _broadcast_to
label_desc: Use image node_id 23 for calling a global function with example usage: shape() and returns: ivy, ivy