code: def bundles():
      """List all of the available data bundles."""
      for bundle in sorted(bundles_module.bundles.keys()):
          if bundle.startswith("."):
              # hide the test data
              continue
          try:
              ingestions = list(
                  map(
                      text_type,
                      bundles_module.ingestions_for_bundle(bundle),
                  )
              )
          except OSError as e:
              if e.errno != errno.ENOENT:
                  raise
              ingestions = []
  
          # If we got no ingestions, either because the directory didn't exist or
          # because there were no entries, print a single message indicating that
          # no ingestions have yet been made.
          for timestamp in ingestions or ["<no ingestions>"]:
              click.echo("%s %s" % (bundle, timestamp), sys.stdout)
  
imports: import errno
  import os
  from functools import wraps
  import re
  import click
  import sys
  import logbook
  import pandas
  from catalyst.marketplace.marketplace import Marketplace
  from six import text_type
  from catalyst.data import bundles
  from catalyst.exchange.exchange_bundle import ExchangeBundle
  from catalyst.exchange.utils.exchange_utils import delete_algo_folder
  from catalyst.utils.cli import Date, Timestamp
  from catalyst.utils.run_algo import _run, load_extensions
  from catalyst.exchange.utils.bundle_utils import EXCHANGE_NAMES
  from catalyst.utils.remote import remote_backtest, get_remote_status
label_desc: Use image node_id 14 for calling a global function with example usage: bundles() without return types