code: def _post_process_metadata(
      self, metadata, cache, show_progress=False
  ):
      # Create empty data frame using target metadata column names and dtypes
      final_metadata = pd.DataFrame(
          columns=self.md_column_names,
          index=metadata.index,
      )
  
      # Iterate over the available symbols, loading the asset's raw symbol
      # data from the cache.  The final metadata is computed and recorded in
      # the appropriate row depending on the asset's id.
      with maybe_show_progress(
          metadata.symbol.iteritems(),
          show_progress,
          label="Post-processing symbol metadata",
          item_show_func=item_show_count(len(metadata)),
          length=len(metadata),
          show_percent=False,
      ) as symbols_map:
          for asset_id, symbol in symbols_map:
              # Attempt to load data from disk, the cache should have an
              # entry for each symbol at this point of the execution. If one
              # does not exist, we should fail.
              key = "{sym}.daily.frame".format(sym=symbol)
              try:
                  raw_data = cache[key]
              except KeyError:
                  raise ValueError(
                      "Unable to find cached data for symbol:"
                      " {0}".format(symbol)
                  )
  
              # Perform and require post-processing of metadata.
              final_symbol_metadata = self.post_process_symbol_metadata(
                  asset_id,
                  metadata.iloc[asset_id],
                  raw_data,
              )
  
              # Record symbol's final metadata.
              final_metadata.iloc[asset_id] = final_symbol_metadata
  
          # Register all assets with the bundle's default exchange.
          final_metadata["exchange"] = self.exchange
  
      return final_metadata
  
imports: from itertools import count
  import tarfile
  from time import sleep
  from abc import abstractmethod, abstractproperty
  import logbook
  import pandas
  from .None import core
  from catalyst.utils.cli import item_show_count, maybe_show_progress
  from catalyst.utils.memoize import lazyval
  from catalyst.constants import LOG_LEVEL
label_desc: Use image node_id 23 for calling the BaseBundle obj's underlying member method code with example usage: obj._post_process_metadata(metadata, cache, show_progress) and returns: final_metadata