code: def type_spec_from_value(value):
      """Grab type_spec without converting array-likes to tensors."""
      if is_extension_type(value):
          return value._type_spec  # pylint: disable=protected-access
      # Get a TensorSpec for array-like data without
      # converting the data to a Tensor
      if hasattr(value, "shape") and hasattr(value, "dtype"):
          return tensor_lib.TensorSpec(value.shape, value.dtype)
      else:
          return type_spec.type_spec_from_value(value)
  
imports: import collections
  import copy
  import numpy
  from tensorflow.python.data.experimental.ops import cardinality
  from tensorflow.python.distribute.coordinator import cluster_coordinator
  from tensorflow.python.eager import context
  from tensorflow.python.framework import composite_tensor
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import sparse_tensor
  from tensorflow.python.framework import tensor
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import tensor_util
  from tensorflow.python.framework import type_spec
  from tensorflow.python.keras import backend
  from tensorflow.python.keras.engine import keras_tensor
  from tensorflow.python.keras.utils import object_identity
  from tensorflow.python.keras.utils import tf_contextlib
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.ops.ragged import ragged_tensor
  from tensorflow.python.ops.ragged import ragged_tensor_value
  from tensorflow.python.util import nest
label_desc: Use image node_id 12 for calling a global function with example usage: type_spec_from_value(value) and returns: value, tensor_lib, type_spec