docstr: The market for the specified symbol.
  
  Parameters
  ----------
  symbol: str
      The Catalyst or exchange symbol.
  
  data_frequency: str
      Check for asset corresponding to the specified data_frequency.
      The same asset might exist in the Catalyst repository or
      locally (following a CSV ingestion). Filtering by
      data_frequency picks the right asset.
  
  is_exchange_symbol: bool
      Whether the symbol uses the Catalyst or exchange convention.
  
  is_local: bool
      For the local or Catalyst asset.
  
  Returns
  -------
  TradingPair
      The asset object.
docstr_tok: ["The","market","for","the","specified","symbol",".","Parameters","--","--","--","--","--","symbol",":","str","The","Catalyst","or","exchange","symbol",".","data_frequency",":","str","Check","for","asset","corresponding","to","the","specified","data_frequency",".","The","same","asset","might","exist","in","the","Catalyst","repository","or","locally","(","following","a","CSV","ingestion",")",".","Filtering","by","data_frequency","picks","the","right","asset",".","is_exchange_symbol",":","bool","Whether","the","symbol","uses","the","Catalyst","or","exchange","convention",".","is_local",":","bool","For","the","local","or","Catalyst","asset",".","Returns","--","--","--","-","TradingPair","The","asset","object","."]
code: def get_asset(
      self,
      symbol,
      data_frequency=None,
      is_exchange_symbol=False,
      is_local=None,
  ):
      """
      The market for the specified symbol.
  
      Parameters
      ----------
      symbol: str
          The Catalyst or exchange symbol.
  
      data_frequency: str
          Check for asset corresponding to the specified data_frequency.
          The same asset might exist in the Catalyst repository or
          locally (following a CSV ingestion). Filtering by
          data_frequency picks the right asset.
  
      is_exchange_symbol: bool
          Whether the symbol uses the Catalyst or exchange convention.
  
      is_local: bool
          For the local or Catalyst asset.
  
      Returns
      -------
      TradingPair
          The asset object.
  
      """
      asset = None
  
      # TODO: temp mapping, fix to use a single symbol convention
      og_symbol = symbol
      symbol = (
          self.get_symbol(symbol) if not is_exchange_symbol else symbol
      )
      log.debug("searching assets for: {} {}".format(self.name, symbol))
      # TODO: simplify and loose the loop
      for a in self.assets:
          if asset is not None:
              break
  
          if is_local is not None:
              data_source = "local" if is_local else "catalyst"
              applies = a.data_source == data_source
  
          elif data_frequency is not None:
              applies = (
                  data_frequency == "minute"
                  and a.end_minute is not None
              ) or (
                  data_frequency == "daily" and a.end_daily is not None
              )
          else:
              applies = True
  
          # The symbol provided may use the Catalyst or the exchange
          # convention
          key = (
              a.exchange_symbol
              if is_exchange_symbol
              else self.get_symbol(a)
          )
          if not asset and key.lower() == symbol.lower():
              if applies:
                  asset = a
  
              else:
                  raise NoDataAvailableOnExchange(
                      symbol=key,
                      exchange=self.name,
                      data_frequency=data_frequency,
                  )
  
      if asset is None:
          supported_symbols = sorted([a.symbol for a in self.assets])
  
          raise SymbolNotFoundOnExchange(
              symbol=og_symbol,
              exchange=self.name.title(),
              supported_symbols=supported_symbols,
          )
  
      log.debug("found asset: {}".format(asset))
      return asset
  
imports: import abc
  from abc import ABCMeta, abstractmethod, abstractproperty
  from datetime import timedelta
  from time import sleep
  import numpy
  import pandas
  from catalyst.constants import LOG_LEVEL
  from catalyst.data.data_portal import BASE_FIELDS
  from catalyst.exchange.exchange_bundle import ExchangeBundle
  from catalyst.exchange.exchange_errors import MismatchingQuoteCurrencies, SymbolNotFoundOnExchange, PricingDataNotLoadedError, NoDataAvailableOnExchange, NoValueForField, NoCandlesReceivedFromExchange, TickerNotFoundError, NotEnoughCashError
  from catalyst.exchange.utils.datetime_utils import get_delta, get_periods_range, get_periods, get_start_dt, get_frequency, get_candles_number_from_minutes
  from catalyst.exchange.utils.exchange_utils import get_exchange_symbols, resample_history_df, has_bundle, get_candles_df
  from logbook import Logger
label_desc: Use image node_id 10 for calling the Exchange obj's underlying member method code with example usage: obj.get_asset(symbol, data_frequency, is_exchange_symbol, is_local) and returns: asset