code: def _test_merge_ctables(self):
      exchange_name = "bittrex"
  
      # Switch between daily and minute for testing
      # data_frequency = 'daily'
      data_frequency = "daily"
  
      exchange = get_exchange(exchange_name)
      assets = [
          exchange.get_asset("eth_btc"),
          exchange.get_asset("etc_btc"),
          exchange.get_asset("wings_eth"),
      ]
  
      start = pd.to_datetime("2017-9-1", utc=True)
      end = pd.to_datetime("2017-9-30", utc=True)
  
      exchange_bundle = ExchangeBundle(exchange)
  
      writer = exchange_bundle.get_writer(start, end, data_frequency)
  
      # In the interest of avoiding abstractions, this is writing a chunk
      # to the ctable. It does not include the logic which creates chunks.
      for asset in assets:
          exchange_bundle.ingest_ctable(
              asset=asset,
              data_frequency=data_frequency,
              # period='2017-9',
              period="2017",
              # Dont't forget to update if you change your dates
              start_dt=start,
              end_dt=end,
              writer=writer,
              empty_rows_behavior="strip",
          )
  
      # In daily mode, this returns an error. It appears that writing
      # a second asset in the same date range removed the first asset.
  
      # In minute mode, the data is there too. This signals that the minute
      # writer / reader is more powerful. This explains why I did not
      # encounter these problems as I have been focusing on minute data.
      reader = exchange_bundle.get_reader(data_frequency)
      for asset in assets:
          # Since this pair was loaded last. It should be here in daily mode.
          arrays = reader.load_raw_arrays(
              sids=[asset.sid],
              fields=["close"],
              start_dt=start,
              end_dt=end,
          )
          print(
              "found {} rows for {} ingestion\n{}".format(
                  len(arrays[0]), asset.symbol, arrays[0]
              )
          )
      pass
  
imports: import os
  import tempfile
  from logging import getLogger
  import pandas
  from catalyst.exchange.exchange_bcolz import BcolzExchangeBarReader, BcolzExchangeBarWriter
  from catalyst.exchange.exchange_bundle import ExchangeBundle, BUNDLE_NAME_TEMPLATE
  from catalyst.exchange.utils.bundle_utils import get_bcolz_chunk, get_df_from_arrays
  from catalyst.exchange.utils.datetime_utils import get_start_dt
  from catalyst.exchange.utils.exchange_utils import get_exchange_folder
  from catalyst.exchange.utils.factory import get_exchange
  from catalyst.exchange.utils.stats_utils import df_to_string
  from catalyst.utils.paths import ensure_directory
label_desc: Use image node_id 6 for calling the TestExchangeBundle obj's underlying member method code with example usage: obj._test_merge_ctables() without return types