code: def _fetch_metadata_frame(
      self,
      api_key,
      cache,
      retries=DEFAULT_RETRIES,
      environ=None,
      show_progress=False,
  ):
      # Setup raw metadata iterator to fetch pages if necessary.
      raw_iter = self._fetch_metadata_iter(
          api_key, cache, retries, environ
      )
  
      # Concatenate all frame in iterator to compute a single metadata frame.
      with maybe_show_progress(
          raw_iter,
          show_progress,
          label="Fetching symbol metadata",
          item_show_func=item_show_count(),
          length=3,
          show_percent=False,
      ) as blocks:
          metadata = pd.concat(blocks, ignore_index=True)
  
      return 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 21 for calling the BaseBundle obj's underlying member method code with example usage: obj._fetch_metadata_frame(api_key, cache, retries, environ, show_progress) and returns: metadata