code: def range_in_bundle(asset, start_dt, end_dt, reader):
      """
      Evaluate whether price data of an asset is included has been ingested in
      the exchange bundle for the given date range.
  
      Parameters
      ----------
      asset: TradingPair
      start_dt: datetime
      end_dt: datetime
      reader: BcolzBarMinuteReader
  
      Returns
      -------
      bool
  
      """
      has_data = True
      dates = [start_dt, end_dt]
  
      while dates and has_data:
          try:
              dt = dates.pop(0)
              close = reader.get_value(asset.sid, dt, "close")
  
              if np.isnan(close):
                  has_data = False
  
          except Exception:
              has_data = False
  
      return has_data
  
file_path: catalyst/catalyst/exchange/utils/bundle_utils.py
imports: import os
  import tarfile
  import numpy
  import pandas
  from catalyst.data.bundles.core import download_without_progress
  from catalyst.exchange.utils.exchange_utils import get_exchange_bundles_folder
label_desc: Use image node_id 3 for calling a global function with example usage: range_in_bundle(asset, start_dt, end_dt, reader) and returns: has_data