class_docstr: Reads cache from the FS written by WriteAnalysisCacheToFS.
class_docstr_tok: ["Reads","cache","from","the","FS","written","by","WriteAnalysisCacheToFS","."]
code: def expand(self, pipeline: beam.Pipeline):
      result = {}
  
      for dataset_key_idx, dataset_key in enumerate(
          self._sorted_dataset_keys
      ):
          dataset_cache_path = _get_dataset_cache_path(
              self._cache_base_dir, dataset_key
          )
          manifest_file = _ManifestFile(dataset_cache_path)
          manifest = manifest_file.read()
          if not manifest:
              continue
          dataset_id = f"AnalysisIndex{dataset_key_idx}"
          cache_dict = {}
          for key, cache_key_idx in manifest.items():
              if self._should_read_cache_entry_key(key):
                  cache_dict[key] = (
                      pipeline
                      | f"Read[{dataset_id}]][CacheKeyIndex{cache_key_idx}]"
                      >> self._source(
                          f"{os.path.join(dataset_cache_path, str(cache_key_idx))}-*-of-*"
                      )
                  )
          metadata = (
              pipeline
              | f"ReadMetadata[{dataset_id}]"
              >> _ReadMetadata(dataset_cache_path)
          )
          result[dataset_key] = DatasetCache(cache_dict, metadata)
      return result
  
imports: import os
  import pickle
  import re
  import sys
  from typing import Iterable, Mapping, List, Optional, Union, Tuple
  import apache_beam
  import tensorflow
  from tfx_bsl.types import tfx_namedtuple
label_desc: Use image node_id 3 for calling the ReadAnalysisCacheFromFS obj's underlying member method code with example usage: obj.expand(pipeline) and returns: result