class_docstr: Determines which tensors will be ready when running the graph.
  
  Determines which tensors from `fetches` are ready to run, using following
  algorithm.
  
  1. Determine which table initializers are ready to run.  A table initializer
     is an element of the TABLE_INITIALIZERS collection and it is ready to run
     if all the tensors it depends on are set to ready in
     `replaced_tensors_ready`.
  
  2. Determine which of `fetches` are ready to run.  A fetch is ready to run if
     it only depends on tensors in `feeds` and tensors that are set to ready in
     `replaced_tensors_ready`.
docstr: Builds a dictionary from source tensors to _SourceInfos.
  
  This dictionary stores information about the sources of the graph.
  Each tensor in replaced_tensors_ready is a source whose readiness is known
  and has no name.  Each tensor (or component of a tensor) in input_signature
  is ready to run and has a name determined by the signature.
  
  Args:
    input_signature: A dict whose keys are strings and values are `Tensor`s,
      `SparseTensor`s, or `RaggedTensor`s.
    replaced_tensors_ready: a dict from `Tensor`, `SparseTensor`s, or
      `RaggedTensor`s to bool indicating whether the tensor is ready in this
      phase.
  
  Returns:
    a dictionary from source tensors to _SourceInfos.
docstr_tok: ["Builds","a","dictionary","from","source","tensors","to","_SourceInfos",".","This","dictionary","stores","information","about","the","sources","of","the","graph",".","Each","tensor","in","replaced_tensors_ready","is","a","source","whose","readiness","is","known","and","has","no","name",".","Each","tensor","(","or","component","of","a","tensor",")","in","input_signature","is","ready","to","run","and","has","a","name","determined","by","the","signature",".","Args",":","input_signature",":","A","dict","whose","keys","are","strings","and","values","are","`","Tensor","`","s",",","`","SparseTensor","`","s",",","or","`","RaggedTensor","`","s",".","replaced_tensors_ready",":","a","dict","from","`","Tensor","`",",","`","SparseTensor","`","s",",","or","`","RaggedTensor","`","s","to","bool","indicating","whether","the","tensor","is","ready","in","this","phase",".","Returns",":","a","dictionary","from","source","tensors","to","_SourceInfos","."]
code: def _make_source_infos_dict(
      self, input_signature, replaced_tensors_ready
  ):
      """Builds a dictionary from source tensors to _SourceInfos.
  
      This dictionary stores information about the sources of the graph.
      Each tensor in replaced_tensors_ready is a source whose readiness is known
      and has no name.  Each tensor (or component of a tensor) in input_signature
      is ready to run and has a name determined by the signature.
  
      Args:
        input_signature: A dict whose keys are strings and values are `Tensor`s,
          `SparseTensor`s, or `RaggedTensor`s.
        replaced_tensors_ready: a dict from `Tensor`, `SparseTensor`s, or
          `RaggedTensor`s to bool indicating whether the tensor is ready in this
          phase.
  
      Returns:
        a dictionary from source tensors to _SourceInfos.
      """
      result = {}
      for tensor_or_op, is_ready in replaced_tensors_ready.items():
          for component in _decompose_tensor_or_op(
              tf_utils.deref_tensor_or_op(tensor_or_op)
          ):
              result[
                  tf_utils.hashable_tensor_or_op(component)
              ] = _SourceInfo(is_ready, None)
  
      for name, tensor in input_signature.items():
          if isinstance(tensor, tf.Tensor):
              _set_unique_value_in_dict(
                  result,
                  tensor,
                  _SourceInfo(True, "{}$tensor".format(name)),
              )
          elif isinstance(tensor, composite_tensor.CompositeTensor):
              for idx, tensor_component in enumerate(
                  _decompose_tensor_or_op(tensor)
              ):
                  _set_unique_value_in_dict(
                      result,
                      tensor_component,
                      _SourceInfo(
                          True,
                          "{}$composite_tensor_{}".format(name, idx),
                      ),
                  )
          else:
              raise TypeError(
                  "Expected Tensor, or CompositeTensor, got {} of type {}".format(
                      tensor, type(tensor)
                  )
              )
      return result
  
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 4 for calling the InitializableGraphAnalyzer obj's underlying member method code with example usage: obj._make_source_infos_dict(input_signature, replaced_tensors_ready) and returns: result