docstr: Lookup an order based on the order id returned from one of the
  order functions.
  
  Parameters
  ----------
  order_id : str
      The unique identifier for the order.
  asset_or_symbol: Asset or str
      The asset or the tradingPair symbol of the order.
  return_price: bool
      get the trading price in addition to the order
  params: dict, optional
      Extra parameters to pass to the exchange
  
  Returns
  -------
  order : Order
      The order object.
  execution_price: float
      The execution price per unit of the order if return_price is True
docstr_tok: ["Lookup","an","order","based","on","the","order","id","returned","from","one","of","the","order","functions",".","Parameters","--","--","--","--","--","order_id",":","str","The","unique","identifier","for","the","order",".","asset_or_symbol",":","Asset","or","str","The","asset","or","the","tradingPair","symbol","of","the","order",".","return_price",":","bool","get","the","trading","price","in","addition","to","the","order","params",":","dict",",","optional","Extra","parameters","to","pass","to","the","exchange","Returns","--","--","--","-","order",":","Order","The","order","object",".","execution_price",":","float","The","execution","price","per","unit","of","the","order","if","return_price","is","True"]
code: def get_order(
      self,
      order_id,
      asset_or_symbol=None,
      return_price=False,
      params={},
  ):
      """Lookup an order based on the order id returned from one of the
      order functions.
  
      Parameters
      ----------
      order_id : str
          The unique identifier for the order.
      asset_or_symbol: Asset or str
          The asset or the tradingPair symbol of the order.
      return_price: bool
          get the trading price in addition to the order
      params: dict, optional
          Extra parameters to pass to the exchange
  
      Returns
      -------
      order : Order
          The order object.
      execution_price: float
          The execution price per unit of the order if return_price is True
      """
      if asset_or_symbol is None:
          log.debug(
              "order not found in memory, the request might fail "
              "on some exchanges."
          )
      try:
          symbol = (
              self.get_symbol(asset_or_symbol)
              if asset_or_symbol is not None
              else None
          )
          order_status = self.api.fetch_order(
              id=order_id, symbol=symbol, params=params
          )
          order, executed_price = self._create_order(order_status)
  
          if return_price:
              return order, executed_price
  
          else:
              return order
  
      except (ExchangeError, NetworkError) as e:
          log.warn(
              "unable to fetch order {} / {}: {}".format(
                  self.name, order_id, e
              )
          )
          raise ExchangeRequestError(error=e)
  
imports: import copy
  import json
  import os
  import re
  from collections import defaultdict
  import ccxt
  import pandas
  import six
  from ccxt import InvalidOrder, NetworkError, ExchangeError, RequestTimeout
  from logbook import Logger
  from six import string_types
  from catalyst.algorithm import MarketOrder
  from catalyst.assets._assets import TradingPair
  from catalyst.constants import LOG_LEVEL
  from catalyst.exchange.exchange import Exchange
  from catalyst.exchange.exchange_bundle import ExchangeBundle
  from catalyst.exchange.exchange_errors import InvalidHistoryFrequencyError, ExchangeSymbolsNotFound, ExchangeRequestError, InvalidOrderStyle, ExchangeNotFoundError, CreateOrderError, InvalidHistoryTimeframeError, UnsupportedHistoryFrequencyError
  from catalyst.exchange.exchange_execution import ExchangeLimitOrder
  from catalyst.exchange.utils.exchange_utils import mixin_market_params, get_exchange_folder, get_catalyst_symbol, get_exchange_auth
  from catalyst.exchange.utils.datetime_utils import from_ms_timestamp, get_epoch, get_periods_range
  from catalyst.finance.order import Order, ORDER_STATUS
  from catalyst.finance.transaction import Transaction
  from redo import retry
label_desc: Use image node_id 30 for calling the CCXT obj's underlying member method code with example usage: obj.get_order(order_id, asset_or_symbol, return_price, params) and returns: order,  executed_price, order