code: def _decompose_tensor_or_op(tensor_or_op):
      """Yields the raw components of a `tf.CompositeTensor`.
  
      If tensor_or_op is a `tf.Operation`, or `tf.Tensor`, then
      _decompose_tensor_or_op will act as a pass through.
  
      Args:
        tensor_or_op: `tf.Tensor`, `tf.CompositeTensor`, or `tf.Operation`.
  
      Yields:
        A tf.Tensor or tf.Operation, depending on what tensor_or_op is.
      """
      if isinstance(tensor_or_op, composite_tensor.CompositeTensor):
          for component in tf.nest.flatten(
              tensor_or_op, expand_composites=True
          ):
              yield component
      else:
          yield tensor_or_op
  
imports: import collections
  import copy
  import hashlib
  import itertools
  from typing import Iterable, List, Mapping, Optional, Set, Union
  import uuid
  from absl import logging
  import tensorflow
  from tensorflow_transform import analyzer_nodes
  from tensorflow_transform import common_types
  from tensorflow_transform import nodes
  from tensorflow_transform import tf_utils
  from tfx_bsl.types import tfx_namedtuple
  from tensorflow.python.framework import composite_tensor
  from tensorflow.python.framework import func_graph
  from tensorflow.python.framework import function_def_to_graph
  from tensorflow.python.util import object_identity
label_desc: Use image node_id 1 for calling a global function with example usage: _decompose_tensor_or_op(tensor_or_op) without return types