docstr: Lookup an asset by symbol.
  
  Parameters
  ----------
  symbol : str
      The ticker symbol to resolve.
  as_of_date : datetime or None
      Look up the last owner of this symbol as of this datetime.
      If ``as_of_date`` is None, then this can only resolve the equity
      if exactly one equity has ever owned the ticker.
  fuzzy : bool, optional
      Should fuzzy symbol matching be used? Fuzzy symbol matching
      attempts to resolve differences in representations for
      shareclasses. For example, some people may represent the ``A``
      shareclass of ``BRK`` as ``BRK.A``, where others could write
      ``BRK_A``.
  
  Returns
  -------
  equity : Asset
      The equity that held ``symbol`` on the given ``as_of_date``, or the
      only equity to hold ``symbol`` if ``as_of_date`` is None.
  
  Raises
  ------
  SymbolNotFound
      Raised when no equity has ever held the given symbol.
  MultipleSymbolsFound
      Raised when no ``as_of_date`` is given and more than one equity
      has held ``symbol``. This is also raised when ``fuzzy=True`` and
      there are multiple candidates for the given ``symbol`` on the
      ``as_of_date``.
code: def lookup_symbol(
      self,
      symbol,
      exchange,
      data_frequency=None,
      as_of_date=None,
      fuzzy=False,
  ):
      """Lookup an asset by symbol.
  
      Parameters
      ----------
      symbol : str
          The ticker symbol to resolve.
      as_of_date : datetime or None
          Look up the last owner of this symbol as of this datetime.
          If ``as_of_date`` is None, then this can only resolve the equity
          if exactly one equity has ever owned the ticker.
      fuzzy : bool, optional
          Should fuzzy symbol matching be used? Fuzzy symbol matching
          attempts to resolve differences in representations for
          shareclasses. For example, some people may represent the ``A``
          shareclass of ``BRK`` as ``BRK.A``, where others could write
          ``BRK_A``.
  
      Returns
      -------
      equity : Asset
          The equity that held ``symbol`` on the given ``as_of_date``, or the
          only equity to hold ``symbol`` if ``as_of_date`` is None.
  
      Raises
      ------
      SymbolNotFound
          Raised when no equity has ever held the given symbol.
      MultipleSymbolsFound
          Raised when no ``as_of_date`` is given and more than one equity
          has held ``symbol``. This is also raised when ``fuzzy=True`` and
          there are multiple candidates for the given ``symbol`` on the
          ``as_of_date``.
      """
      log.debug(
          "looking up symbol: {} {}".format(symbol, exchange.name)
      )
  
      return exchange.get_asset(symbol, data_frequency)
  
file_path: catalyst/catalyst/exchange/exchange_asset_finder.py
imports: import pandas
  from catalyst.constants import LOG_LEVEL
  from catalyst.exchange.utils.factory import find_exchanges
  from logbook import Logger
label_desc: Use image node_id 5 for calling the ExchangeAssetFinder obj's underlying member method code with example usage: obj.lookup_symbol(symbol, exchange, data_frequency, as_of_date, fuzzy) and returns: exchange